From 736a1626aad22dc81a11ca3546fc19147f79771f Mon Sep 17 00:00:00 2001 From: dev Date: Thu, 26 Feb 2026 12:15:34 +0000 Subject: [PATCH] feat(ui_builders_shared): implement class ScrollbarWheelOnlyScrollArea --- scanslicer/ui_builders_shared.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scanslicer/ui_builders_shared.py b/scanslicer/ui_builders_shared.py index 4fab19c..81033e7 100644 --- a/scanslicer/ui_builders_shared.py +++ b/scanslicer/ui_builders_shared.py @@ -71,3 +71,21 @@ def icon_from_svg_data_url(data_url, size=24, color_hex=None, palette=None): renderer.render(painter) painter.end() return QIcon(pixmap) + + +# ScrollbarWheelOnlyScrollArea: class definition for ScanSlicer behavior. +class ScrollbarWheelOnlyScrollArea(QScrollArea): + # wheelEvent: function definition for ScanSlicer behavior. + def wheelEvent(self, event): + scrollbar = self.verticalScrollBar() + if scrollbar is None or not scrollbar.isVisible(): + event.ignore() + return + + global_pos = event.globalPosition().toPoint() + scrollbar_rect = QRect(scrollbar.mapToGlobal(QPoint(0, 0)), scrollbar.size()) + if not scrollbar_rect.contains(global_pos): + event.ignore() + return + + super().wheelEvent(event)