mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 15:27:54 +00:00
Disable certain mouse wheel events in Options dialog
The mouse wheel events for QComboBox & QSpinBox widgets in Options dialog are filtered out.
This commit is contained in:
parent
0b050e2a30
commit
96819f3798
@ -485,10 +485,6 @@ void AdvancedSettings::loadAdvancedSettings()
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
void AdvancedSettings::addRow(int row, const QString &rowText, T* widget)
|
void AdvancedSettings::addRow(int row, const QString &rowText, T* widget)
|
||||||
{
|
{
|
||||||
// ignore mouse wheel event
|
|
||||||
static WheelEventEater filter;
|
|
||||||
widget->installEventFilter(&filter);
|
|
||||||
|
|
||||||
setItem(row, PROPERTY, new QTableWidgetItem(rowText));
|
setItem(row, PROPERTY, new QTableWidgetItem(rowText));
|
||||||
setCellWidget(row, VALUE, widget);
|
setCellWidget(row, VALUE, widget);
|
||||||
|
|
||||||
|
@ -31,28 +31,11 @@
|
|||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QEvent>
|
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
#include <QTableWidget>
|
#include <QTableWidget>
|
||||||
|
|
||||||
class WheelEventEater: public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool eventFilter(QObject *obj, QEvent *event)
|
|
||||||
{
|
|
||||||
switch (event->type()) {
|
|
||||||
case QEvent::Wheel:
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return QObject::eventFilter(obj, event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class AdvancedSettings: public QTableWidget
|
class AdvancedSettings: public QTableWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QDesktopWidget>
|
#include <QDesktopWidget>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
|
#include <QEvent>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QSystemTrayIcon>
|
#include <QSystemTrayIcon>
|
||||||
@ -50,6 +51,7 @@
|
|||||||
|
|
||||||
#include "app/application.h"
|
#include "app/application.h"
|
||||||
#include "base/bittorrent/session.h"
|
#include "base/bittorrent/session.h"
|
||||||
|
#include "base/global.h"
|
||||||
#include "base/net/dnsupdater.h"
|
#include "base/net/dnsupdater.h"
|
||||||
#include "base/net/portforwarder.h"
|
#include "base/net/portforwarder.h"
|
||||||
#include "base/net/proxyconfigurationmanager.h"
|
#include "base/net/proxyconfigurationmanager.h"
|
||||||
@ -72,6 +74,18 @@
|
|||||||
|
|
||||||
#include "ui_optionsdlg.h"
|
#include "ui_optionsdlg.h"
|
||||||
|
|
||||||
|
class WheelEventEater : public QObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using QObject::QObject;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool eventFilter(QObject *, QEvent *event) override
|
||||||
|
{
|
||||||
|
return (event->type() == QEvent::Wheel);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
OptionsDialog::OptionsDialog(QWidget *parent)
|
OptionsDialog::OptionsDialog(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
@ -425,6 +439,13 @@ OptionsDialog::OptionsDialog(QWidget *parent)
|
|||||||
m_ui->textTempPath->setDialogCaption(tr("Choose a save directory"));
|
m_ui->textTempPath->setDialogCaption(tr("Choose a save directory"));
|
||||||
m_ui->textTempPath->setMode(FileSystemPathEdit::Mode::DirectorySave);
|
m_ui->textTempPath->setMode(FileSystemPathEdit::Mode::DirectorySave);
|
||||||
|
|
||||||
|
// disable mouse wheel event on widgets to avoid mis-selection
|
||||||
|
WheelEventEater *wheelEventEater = new WheelEventEater(this);
|
||||||
|
for (QComboBox *widget : copyAsConst(findChildren<QComboBox *>()))
|
||||||
|
widget->installEventFilter(wheelEventEater);
|
||||||
|
for (QSpinBox *widget : copyAsConst(findChildren<QSpinBox *>()))
|
||||||
|
widget->installEventFilter(wheelEventEater);
|
||||||
|
|
||||||
loadWindowState();
|
loadWindowState();
|
||||||
show();
|
show();
|
||||||
// Have to be called after show(), because splitter width needed
|
// Have to be called after show(), because splitter width needed
|
||||||
|
Loading…
Reference in New Issue
Block a user