]> sigrok.org Git - pulseview.git/blobdiff - pv/view/viewport.cpp
Viewport: Mouse wheel scrolls vertically when the control key is pressed
[pulseview.git] / pv / view / viewport.cpp
index 2dfdddc1448bddecd8653918c63204ca63dd266c..6b85e1b79d324c4788afc40b5903b02e0497d826 100644 (file)
@@ -194,18 +194,27 @@ void Viewport::mouseDoubleClickEvent(QMouseEvent *event)
                view_.zoom(-2.0, event->x());
 }
 
-void Viewport::wheelEvent(QWheelEvent *event)
+void Viewport::wheelEvent(QWheelEvent *e)
 {
-       assert(event);
-
-       if (event->orientation() == Qt::Vertical) {
-               // Vertical scrolling is interpreted as zooming in/out
-               view_.zoom(event->delta() / 120, event->x());
-       } else if (event->orientation() == Qt::Horizontal) {
+       assert(e);
+
+       if (e->orientation() == Qt::Vertical)
+       {
+               if (e->modifiers() & Qt::ControlModifier) {
+                       // Vertical scrolling with the control key pressed
+                       // is intrepretted as vertical scrolling
+                       view_.set_v_offset(-view_.owner_visual_v_offset() -
+                               (e->delta() * height()) / (8 * 120));
+               } else {
+                       // Vertical scrolling is interpreted as zooming in/out
+                       view_.zoom(e->delta() / 120, e->x());
+               }
+       }
+       else if (e->orientation() == Qt::Horizontal)
+       {
                // Horizontal scrolling is interpreted as moving left/right
                view_.set_scale_offset(view_.scale(),
-                                      event->delta() * view_.scale()
-                                      + view_.offset());
+                       e->delta() * view_.scale() + view_.offset());
        }
 }