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