From ac5936f7be272e956a937ecf164b3ce28bb53680 Mon Sep 17 00:00:00 2001 From: Dawn Date: Thu, 13 Aug 2026 10:39:36 +0200 Subject: [PATCH] fix: exposure wheel only increased when Alt held Qt xcb/windows swap wheel axes while Alt is held, so angleDelta().y() is 0 and copysign(_, 0) is always positive. Fall back to angleDelta().x() and ignore genuine zero deltas. Co-Authored-By: Claude Fable 5 --- src/aare/gui/widgets/camera_image.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/aare/gui/widgets/camera_image.py b/src/aare/gui/widgets/camera_image.py index 27ee8a54..14b8a0dd 100644 --- a/src/aare/gui/widgets/camera_image.py +++ b/src/aare/gui/widgets/camera_image.py @@ -1354,7 +1354,13 @@ class SampleCameraImageLabel(QGraphicsView): def wheelEvent(self, event: QWheelEvent): if not self.wheel_event_timer.isActive(): - delta_y = event.angleDelta().y() + # Qt's xcb/windows platform plugins swap wheel axes while Alt is held, + # so a vertical scroll lands in angleDelta().x() and y() is 0. Without + # this fallback, copysign(_, 0) is always positive and Alt+wheel + # exposure can only ever increase. + delta_y = event.angleDelta().y() or event.angleDelta().x() + if delta_y == 0: + return match self._state: case SampleCameraImageState.BEAM_MARKING: if event.modifiers() & Qt.KeyboardModifier.AltModifier: