- 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)
+ {