diff --git a/fixtracks/widgets/detectionview.py b/fixtracks/widgets/detectionview.py index 80765c1..f4500c5 100644 --- a/fixtracks/widgets/detectionview.py +++ b/fixtracks/widgets/detectionview.py @@ -92,6 +92,7 @@ class DetectionView(QWidget): self._view = QGraphicsView() self._view.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self._view.setMouseTracking(True) + self._mouseEnabled = True self._zoomFactor = 1.15 self._minZoom = 0.1 self._maxZoom = 10 @@ -102,16 +103,23 @@ class DetectionView(QWidget): self.setLayout(lyt) def wheelEvent(self, event): - if event.angleDelta().y() > 0: # Zoom in - factor = self._zoomFactor - else: # Zoom out - factor = 1 / self._zoomFactor - - newZoom = self._currentZoom * factor - - if self._minZoom < newZoom < self._maxZoom: - self._view.scale(factor, factor) - self._currentZoom = newZoom + if not self._mouseEnabled: + super().wheelEvent(event) + return + modifiers = event.modifiers() + if modifiers == Qt.ControlModifier: + delta = event.angleDelta().x() + if delta == 0: + delta = event.angleDelta().y() + sc = 1.001 ** delta + self._view.scale(sc, sc) + else: + super().wheelEvent(event) + + # elif modifiers == Qt.ShiftModifier: + # print("Shift key pressed") + # elif modifiers == Qt.AltModifier: + # print("Alt key pressed") def setImage(self, image: QImage): self._img = image