Viewport: Allow horizontal scrolling via mouse wheel tilting
[pulseview.git] / pv / view / viewport.cpp
index 03b07fdf13351d3ceab1e8720af701f503046335..90f2b4b2a5a922d63a7931e47d9482c621f4d088 100644 (file)
@@ -98,7 +98,7 @@ void Viewport::mouseMoveEvent(QMouseEvent *event)
 {
        assert(event);
 
-       if(event->buttons() & Qt::LeftButton)
+       if (event->buttons() & Qt::LeftButton)
        {
                _view.set_scale_offset(_view.scale(),
                        _mouse_down_offset +
@@ -115,12 +115,21 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event)
 void Viewport::wheelEvent(QWheelEvent *event)
 {
        assert(event);
-       _view.zoom(event->delta() / 120, event->x());
+
+       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) {
+               // Horizontal scrolling is interpreted as moving left/right
+               _view.set_scale_offset(_view.scale(),
+                                      event->delta() * _view.scale()
+                                      + _view.offset());
+       }
 }
 
 void Viewport::draw_cursors_background(QPainter &p)
 {
-       if(!_view.cursors_shown())
+       if (!_view.cursors_shown())
                return;
 
        p.setPen(Qt::NoPen);
@@ -137,7 +146,7 @@ void Viewport::draw_cursors_background(QPainter &p)
 
 void Viewport::draw_cursors_foreground(QPainter &p)
 {
-       if(!_view.cursors_shown())
+       if (!_view.cursors_shown())
                return;
 
        const QRect r = rect();