diff --git a/src/widget/form/profileform.cpp b/src/widget/form/profileform.cpp index 794f914cb..2eb6d30a9 100644 --- a/src/widget/form/profileform.cpp +++ b/src/widget/form/profileform.cpp @@ -120,6 +120,12 @@ ProfileForm::ProfileForm(QWidget *parent) : connect(core, &Core::usernameSet, this, [=](const QString& val) { bodyUI->userName->setText(val); }); connect(core, &Core::statusMessageSet, this, [=](const QString& val) { bodyUI->statusMessage->setText(val); }); + + for (QComboBox* cb : findChildren()) + { + cb->installEventFilter(this); + cb->setFocusPolicy(Qt::StrongFocus); + } } ProfileForm::~ProfileForm() @@ -392,3 +398,14 @@ void ProfileForm::on_saveQr_clicked() GUI::showWarning(tr("Failed to copy file"), tr("The file you chose could not be written to.")); } } + +bool ProfileForm::eventFilter(QObject *o, QEvent *e) +{ + if ((e->type() == QEvent::Wheel) && + (qobject_cast(o) || qobject_cast(o) )) + { + e->ignore(); + return true; + } + return QWidget::eventFilter(o, e); +} diff --git a/src/widget/form/profileform.h b/src/widget/form/profileform.h index 82cd829ef..007d7d9b3 100644 --- a/src/widget/form/profileform.h +++ b/src/widget/form/profileform.h @@ -80,6 +80,7 @@ private slots: protected: virtual void showEvent(QShowEvent *); + bool eventFilter(QObject *o, QEvent *e); private: void refreshProfiles(); diff --git a/src/widget/form/settings/advancedform.cpp b/src/widget/form/settings/advancedform.cpp index 6a4887217..b2747eed9 100644 --- a/src/widget/form/settings/advancedform.cpp +++ b/src/widget/form/settings/advancedform.cpp @@ -42,6 +42,12 @@ AdvancedForm::AdvancedForm() : connect(bodyUI->cbMakeToxPortable, &QCheckBox::stateChanged, this, &AdvancedForm::onMakeToxPortableUpdated); connect(bodyUI->syncTypeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onDbSyncTypeUpdated())); connect(bodyUI->resetButton, SIGNAL(clicked()), this, SLOT(resetToDefault())); + + for (QComboBox* cb : findChildren()) + { + cb->installEventFilter(this); + cb->setFocusPolicy(Qt::StrongFocus); + } } AdvancedForm::~AdvancedForm() @@ -67,3 +73,14 @@ void AdvancedForm::resetToDefault() bodyUI->syncTypeComboBox->setCurrentIndex(index); onDbSyncTypeUpdated(); } + +bool AdvancedForm::eventFilter(QObject *o, QEvent *e) +{ + if ((e->type() == QEvent::Wheel) && + (qobject_cast(o) || qobject_cast(o) )) + { + e->ignore(); + return true; + } + return QWidget::eventFilter(o, e); +} diff --git a/src/widget/form/settings/advancedform.h b/src/widget/form/settings/advancedform.h index 4a1fecf22..0f1a1a462 100644 --- a/src/widget/form/settings/advancedform.h +++ b/src/widget/form/settings/advancedform.h @@ -31,6 +31,9 @@ class AdvancedForm : public GenericForm public: AdvancedForm(); virtual ~AdvancedForm(); + +protected: + bool eventFilter(QObject *o, QEvent *e); private slots: void onMakeToxPortableUpdated(); diff --git a/src/widget/form/settings/avform.cpp b/src/widget/form/settings/avform.cpp index d3cefe8a7..fe7742fe9 100644 --- a/src/widget/form/settings/avform.cpp +++ b/src/widget/form/settings/avform.cpp @@ -52,6 +52,12 @@ AVForm::AVForm() : connect(bodyUI->filterAudio, SIGNAL(toggled(bool)), this, SLOT(onFilterAudioToggled(bool))); connect(bodyUI->rescanButton, &QPushButton::clicked, this, [=](){getAudioInDevices(); getAudioOutDevices();}); bodyUI->playbackSlider->setValue(100); + + for (QComboBox* cb : findChildren()) + { + cb->installEventFilter(this); + cb->setFocusPolicy(Qt::StrongFocus); + } } AVForm::~AVForm() @@ -268,3 +274,14 @@ void AVForm::on_playbackSlider_valueChanged(int value) { Audio::getInstance().outputVolume = value / 100.0; } + +bool AVForm::eventFilter(QObject *o, QEvent *e) +{ + if ((e->type() == QEvent::Wheel) && + (qobject_cast(o) || qobject_cast(o) )) + { + e->ignore(); + return true; + } + return QWidget::eventFilter(o, e); +} diff --git a/src/widget/form/settings/avform.h b/src/widget/form/settings/avform.h index 9b3980189..a61831d0b 100644 --- a/src/widget/form/settings/avform.h +++ b/src/widget/form/settings/avform.h @@ -63,12 +63,12 @@ private slots: virtual void showEvent(QShowEvent*); void on_HueSlider_valueChanged(int value); - void on_BrightnessSlider_valueChanged(int value); - void on_SaturationSlider_valueChanged(int value); - void on_ContrastSlider_valueChanged(int value); + +protected: + bool eventFilter(QObject *o, QEvent *e); private: Ui::AVSettings *bodyUI; diff --git a/src/widget/form/settings/generalform.cpp b/src/widget/form/settings/generalform.cpp index efee7088d..4d7629ea7 100644 --- a/src/widget/form/settings/generalform.cpp +++ b/src/widget/form/settings/generalform.cpp @@ -152,17 +152,19 @@ GeneralForm::GeneralForm(SettingsWidget *myParent) : connect(bodyUI->reconnectButton, &QPushButton::clicked, this, &GeneralForm::onReconnectClicked); connect(bodyUI->cbFauxOfflineMessaging, &QCheckBox::stateChanged, this, &GeneralForm::onFauxOfflineMessaging); connect(bodyUI->cbCompactLayout, &QCheckBox::stateChanged, this, &GeneralForm::onCompactLayout); - + // prevent stealing mouse whell scroll // scrolling event won't be transmitted to comboboxes or qspinboxes when scrolling // you can scroll through general settings without accidentially chaning theme/skin/icons etc. // @see GeneralForm::eventFilter(QObject *o, QEvent *e) at the bottom of this file for more - Q_FOREACH(QComboBox *cb, findChildren() ) { + for (QComboBox* cb : findChildren()) + { cb->installEventFilter(this); cb->setFocusPolicy(Qt::StrongFocus); } - - Q_FOREACH(QSpinBox *sp, findChildren() ) { + + for (QSpinBox* sp : findChildren()) + { sp->installEventFilter(this); sp->setFocusPolicy(Qt::WheelFocus); } diff --git a/src/widget/form/settings/privacyform.cpp b/src/widget/form/settings/privacyform.cpp index 1ab5c4ae7..85942ad1e 100644 --- a/src/widget/form/settings/privacyform.cpp +++ b/src/widget/form/settings/privacyform.cpp @@ -80,9 +80,9 @@ bool PrivacyForm::setChatLogsPassword() body += "\n\n" + tr("It appears you have an unused encrypted chat history; if the password matches, it will be added to your current history."); if (core->isPasswordSet(Core::ptMain)) - dialog = new SetPasswordDialog(body, tr("Use data file password", "pushbutton text"), this); + dialog = new SetPasswordDialog(body, tr("Use data file password", "pushbutton text"), 0); else - dialog = new SetPasswordDialog(body, QString(), this); + dialog = new SetPasswordDialog(body, QString(), 0); do { int r = dialog->exec(); @@ -203,9 +203,9 @@ bool PrivacyForm::setToxPassword() SetPasswordDialog* dialog; QString body = tr("Please set your new data file password."); if (core->isPasswordSet(Core::ptHistory)) - dialog = new SetPasswordDialog(body, tr("Use chat history password", "pushbutton text"), this); + dialog = new SetPasswordDialog(body, tr("Use chat history password", "pushbutton text"), 0); else - dialog = new SetPasswordDialog(body, QString(), this); + dialog = new SetPasswordDialog(body, QString(), 0); if (int r = dialog->exec()) {