From 47449132e187cf90d657ae76304d7eb5f2b6bbb2 Mon Sep 17 00:00:00 2001 From: David Perl Date: Fri, 14 Aug 2026 10:09:37 +0200 Subject: [PATCH] wip guard wheel guard --- src/aare/gui/widgets/wheel_value_guard.py | 44 ++++++++++++----------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/aare/gui/widgets/wheel_value_guard.py b/src/aare/gui/widgets/wheel_value_guard.py index 7697de8e..a9088426 100644 --- a/src/aare/gui/widgets/wheel_value_guard.py +++ b/src/aare/gui/widgets/wheel_value_guard.py @@ -26,26 +26,30 @@ class WheelValueGuard(QObject): GUARDED = (QAbstractSpinBox, QSlider, QDial, QComboBox, QTabBar) def eventFilter(self, obj, event): - if event.type() == QEvent.Type.Wheel and isinstance(obj, self.GUARDED): - if event.buttons() & Qt.MouseButton.RightButton: - return False # right button held: deliberate value adjustment - area = obj.parentWidget() - while area is not None and not isinstance(area, QAbstractScrollArea): - area = area.parentWidget() - if area is not None: - relayed = QWheelEvent( - area.viewport().mapFromGlobal(event.globalPosition()), - event.globalPosition(), - event.pixelDelta(), - event.angleDelta(), - event.buttons(), - event.modifiers(), - event.phase(), - event.inverted(), - ) - QApplication.sendEvent(area.viewport(), relayed) - return True - return super().eventFilter(obj, event) + try: + if event.type() == QEvent.Type.Wheel and isinstance(obj, self.GUARDED): + if event.buttons() & Qt.MouseButton.RightButton: + return False # right button held: deliberate value adjustment + area = obj.parentWidget() + while area is not None and not isinstance(area, QAbstractScrollArea): + area = area.parentWidget() + if area is not None: + relayed = QWheelEvent( + area.viewport().mapFromGlobal(event.globalPosition()), + event.globalPosition(), + event.pixelDelta(), + event.angleDelta(), + event.buttons(), + event.modifiers(), + event.phase(), + event.inverted(), + ) + QApplication.sendEvent(area.viewport(), relayed) + return True + return super().eventFilter(obj, event) + except Exception as e: + print(e) + return False if __name__ == "__main__":