Browse Source

Disable certain mouse wheel events in Options dialog

The mouse wheel events for QComboBox & QSpinBox widgets in Options
dialog are filtered out.
adaptive-webui-19844
Chocobo1 6 years ago
parent
commit
96819f3798
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 4
      src/gui/advancedsettings.cpp
  2. 17
      src/gui/advancedsettings.h
  3. 21
      src/gui/optionsdlg.cpp

4
src/gui/advancedsettings.cpp

@ -485,10 +485,6 @@ void AdvancedSettings::loadAdvancedSettings() @@ -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);

17
src/gui/advancedsettings.h

@ -31,28 +31,11 @@ @@ -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

21
src/gui/optionsdlg.cpp

@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@
#include <QDesktopServices>
#include <QDesktopWidget>
#include <QDialogButtonBox>
#include <QEvent>
#include <QFileDialog>
#include <QMessageBox>
#include <QSystemTrayIcon>
@ -50,6 +51,7 @@ @@ -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 @@ @@ -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) @@ -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…
Cancel
Save