mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-12-21 08:09:35 +08:00
Merge pull request #9053 from Chocobo1/optionWheel
Disable certain mouse wheel events in Options dialog
This commit is contained in:
commit
c8c7ed4a2e
@ -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
|
||||
|
@ -172,22 +172,20 @@ private:
|
||||
bool isWebUiEnabled() const;
|
||||
QString webUiUsername() const;
|
||||
QString webUiPassword() const;
|
||||
|
||||
private:
|
||||
// WebUI SSL Cert / key
|
||||
bool setSslKey(const QByteArray &key);
|
||||
bool setSslCertificate(const QByteArray &cert);
|
||||
bool schedTimesOk();
|
||||
bool webUIAuthenticationOk();
|
||||
|
||||
private:
|
||||
QByteArray m_sslCert, m_sslKey;
|
||||
|
||||
Ui::OptionsDialog *m_ui;
|
||||
QButtonGroup choiceLanguage;
|
||||
QAbstractButton *applyButton;
|
||||
AdvancedSettings *advancedSettings;
|
||||
QList<QString> addedScanDirs;
|
||||
QList<QString> removedScanDirs;
|
||||
// SSL Cert / key
|
||||
QByteArray m_sslCert, m_sslKey;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user