From: Marius Gedminas <marius@gedmin.as>
... | ... |
@@ -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() |