mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 07:18:08 +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>
|
||||
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));
|
||||
setCellWidget(row, VALUE, widget);
|
||||
|
||||
|
@ -31,28 +31,11 @@
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QEvent>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QSpinBox>
|
||||
#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
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include <QDesktopServices>
|
||||
#include <QDesktopWidget>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QEvent>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QSystemTrayIcon>
|
||||
@ -50,6 +51,7 @@
|
||||
|
||||
#include "app/application.h"
|
||||
#include "base/bittorrent/session.h"
|
||||
#include "base/global.h"
|
||||
#include "base/net/dnsupdater.h"
|
||||
#include "base/net/portforwarder.h"
|
||||
#include "base/net/proxyconfigurationmanager.h"
|
||||
@ -72,6 +74,18 @@
|
||||
|
||||
#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
|
||||
OptionsDialog::OptionsDialog(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
@ -425,6 +439,13 @@ OptionsDialog::OptionsDialog(QWidget *parent)
|
||||
m_ui->textTempPath->setDialogCaption(tr("Choose a save directory"));
|
||||
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();
|
||||
show();
|
||||
// Have to be called after show(), because splitter width needed
|
||||
|
Loading…
Reference in New Issue
Block a user