- const QRect r = rect();
- pair<Cursor, Cursor> &cursors = _view.cursors();
- cursors.first.paint(p, r);
- cursors.second.paint(p, r);
+void Viewport::wheelEvent(QWheelEvent *e)
+{
+ 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(),
+ e->delta() * view_.scale() + view_.offset());
+ }