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() |