From 43b389410a6479bbeed83c4a29b175b05df8476f Mon Sep 17 00:00:00 2001 From: Dentomologist Date: Wed, 3 Feb 2021 20:11:38 -0800 Subject: [PATCH] Config: Fix expression window scroll wheel spam Fixes the expression window being spammed with the first entry in the Operators or Functions select menus when scrolling the mouse wheel while hovering over them. Fixes https://bugs.dolphin-emu.org/issues/12405 --- Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp | 9 +++++++-- Source/Core/DolphinQt/Config/Mapping/IOWindow.h | 13 ++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp index 887063e8aa..dc6f3404ea 100644 --- a/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp @@ -98,6 +98,11 @@ ControlExpressionSyntaxHighlighter::ControlExpressionSyntaxHighlighter(QTextDocu { } +void QComboBoxWithMouseWheelDisabled::wheelEvent(QWheelEvent* event) +{ + // Do nothing +} + void ControlExpressionSyntaxHighlighter::highlightBlock(const QString&) { // TODO: This is going to result in improper highlighting with non-ascii characters: @@ -253,7 +258,7 @@ void IOWindow::CreateMainLayout() m_expression_text->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); new ControlExpressionSyntaxHighlighter(m_expression_text->document()); - m_operators_combo = new QComboBox(); + m_operators_combo = new QComboBoxWithMouseWheelDisabled(); m_operators_combo->addItem(tr("Operators")); m_operators_combo->insertSeparator(1); if (m_type == Type::Input) @@ -275,7 +280,7 @@ void IOWindow::CreateMainLayout() m_operators_combo->addItem(tr(", Comma")); } - m_functions_combo = new QComboBox(this); + m_functions_combo = new QComboBoxWithMouseWheelDisabled(this); m_functions_combo->addItem(tr("Functions")); m_functions_combo->insertSeparator(1); m_functions_combo->addItem(QStringLiteral("if")); diff --git a/Source/Core/DolphinQt/Config/Mapping/IOWindow.h b/Source/Core/DolphinQt/Config/Mapping/IOWindow.h index 87e2e0843a..8969db2a56 100644 --- a/Source/Core/DolphinQt/Config/Mapping/IOWindow.h +++ b/Source/Core/DolphinQt/Config/Mapping/IOWindow.h @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -17,7 +18,6 @@ class ControlReference; class MappingWidget; class QAbstractButton; -class QComboBox; class QDialogButtonBox; class QLineEdit; class QTableWidget; @@ -45,6 +45,17 @@ protected: void highlightBlock(const QString& text) final override; }; +class QComboBoxWithMouseWheelDisabled : public QComboBox +{ + Q_OBJECT +public: + explicit QComboBoxWithMouseWheelDisabled(QWidget* parent = nullptr) : QComboBox(parent) {} + +protected: + // Consumes event while doing nothing + void wheelEvent(QWheelEvent* event) override; +}; + class IOWindow final : public QDialog { Q_OBJECT