Mercurial > hg > easyhg
diff panned.cpp @ 53:3c46b2ac45d3
* Put proper labels &c in changeset items; colour branches and users; etc
author | Chris Cannam |
---|---|
date | Fri, 12 Nov 2010 16:48:18 +0000 |
parents | bd3accba9b3f |
children | 1394c8cbf991 |
line wrap: on
line diff
--- a/panned.cpp Fri Nov 12 11:32:01 2010 +0000 +++ b/panned.cpp Fri Nov 12 16:48:18 2010 +0000 @@ -19,6 +19,7 @@ #include <QScrollBar> #include <QGLWidget> +#include <QWheelEvent> #include <iostream> @@ -66,6 +67,22 @@ } void +Panned::zoomIn() +{ + QMatrix m = matrix(); + m.scale(1.0 / 1.1, 1.0 / 1.1); + setMatrix(m); +} + +void +Panned::zoomOut() +{ + QMatrix m = matrix(); + m.scale(1.1, 1.1); + setMatrix(m); +} + +void Panned::slotSetPannedRect(QRectF pr) { centerOn(pr.center()); @@ -76,8 +93,23 @@ void Panned::wheelEvent(QWheelEvent *ev) { - emit wheelEventReceived(ev); - QGraphicsView::wheelEvent(ev); + if (ev->modifiers() & Qt::ControlModifier) { + int d = ev->delta(); + if (d > 0) { + while (d > 0) { + zoomOut(); + d -= 120; + } + } else { + while (d < 0) { + zoomIn(); + d += 120; + } + } + } else { + emit wheelEventReceived(ev); + QGraphicsView::wheelEvent(ev); + } } void