Browse code

Ctrl-dragging zooms.

From: Marius Gedminas <marius@gedmin.as>

Jose.R.Fonseca authored on 13/07/2008 03:21:21
Showing 1 changed files

  • xdot.py index a0cbbec..cbb325a 100755
... ...
@@ -877,10 +877,17 @@ class DotWidget(gtk.DrawingArea):
877 877
         state = event.state
878 878
 
879 879
         if state & gtk.gdk.BUTTON2_MASK or state & gtk.gdk.BUTTON1_MASK:
880
-            # pan the image
881
-            self.x += (self.prevmousex - x)/self.zoom_ratio
882
-            self.y += (self.prevmousey - y)/self.zoom_ratio
883
-            self.queue_draw()
880
+            deltax = self.prevmousex - event.x
881
+            deltay = self.prevmousey - event.y
882
+            if state & gtk.gdk.CONTROL_MASK:
883
+                # zoom the image
884
+                self.zoom_ratio *= 1.005 ** (deltax + deltay)
885
+                self.queue_draw()
886
+            else:
887
+                # pan the image
888
+                self.x += deltax/self.zoom_ratio
889
+                self.y += deltay/self.zoom_ratio
890
+                self.queue_draw()
884 891
             self.prevmousex = x
885 892
             self.prevmousey = y
886 893
             self.animation.stop()