|
From: <mme...@us...> - 2008-04-20 10:45:37
|
Revision: 5053
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5053&view=rev
Author: mmetz_bn
Date: 2008-04-20 03:45:32 -0700 (Sun, 20 Apr 2008)
Log Message:
-----------
Fixed double-zoom bug
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/lib/matplotlib/backend_bases.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2008-04-20 01:33:46 UTC (rev 5052)
+++ trunk/matplotlib/CHANGELOG 2008-04-20 10:45:32 UTC (rev 5053)
@@ -1,3 +1,5 @@
+2008-04-20 Fix double-zoom bug. - MM
+
2008-04-15 Speed up color mapping. - EF
2008-04-12 Speed up zooming and panning of dense images. - EF
Modified: trunk/matplotlib/lib/matplotlib/backend_bases.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backend_bases.py 2008-04-20 01:33:46 UTC (rev 5052)
+++ trunk/matplotlib/lib/matplotlib/backend_bases.py 2008-04-20 10:45:32 UTC (rev 5053)
@@ -1508,6 +1508,8 @@
'the release mouse button callback in zoom to rect mode'
if not self._xypress: return
+ last_a = []
+
for cur_xypress in self._xypress:
x, y = event.x, event.y
lastx, lasty, a, ind, lim, trans = cur_xypress
@@ -1526,28 +1528,42 @@
x, y = inverse.transform_point( (x, y) )
Xmin,Xmax=a.get_xlim()
Ymin,Ymax=a.get_ylim()
+
+ # detect twinx,y axes and avoid double zooming
+ twinx, twiny = False, False
+ if last_a:
+ for la in last_a:
+ if a._shared_x_axes.joined(a,la): twinx=True
+ if a._shared_y_axes.joined(a,la): twiny=True
+ last_a.append(a)
- if Xmin < Xmax:
- if x<lastx: x0, x1 = x, lastx
- else: x0, x1 = lastx, x
- if x0 < Xmin: x0=Xmin
- if x1 > Xmax: x1=Xmax
+ if twinx:
+ x0, x1 = Xmin, Xmax
else:
- if x>lastx: x0, x1 = x, lastx
- else: x0, x1 = lastx, x
- if x0 > Xmin: x0=Xmin
- if x1 < Xmax: x1=Xmax
+ if Xmin < Xmax:
+ if x<lastx: x0, x1 = x, lastx
+ else: x0, x1 = lastx, x
+ if x0 < Xmin: x0=Xmin
+ if x1 > Xmax: x1=Xmax
+ else:
+ if x>lastx: x0, x1 = x, lastx
+ else: x0, x1 = lastx, x
+ if x0 > Xmin: x0=Xmin
+ if x1 < Xmax: x1=Xmax
- if Ymin < Ymax:
- if y<lasty: y0, y1 = y, lasty
- else: y0, y1 = lasty, y
- if y0 < Ymin: y0=Ymin
- if y1 > Ymax: y1=Ymax
+ if twiny:
+ y0, y1 = Ymin, Ymax
else:
- if y>lasty: y0, y1 = y, lasty
- else: y0, y1 = lasty, y
- if y0 > Ymin: y0=Ymin
- if y1 < Ymax: y1=Ymax
+ if Ymin < Ymax:
+ if y<lasty: y0, y1 = y, lasty
+ else: y0, y1 = lasty, y
+ if y0 < Ymin: y0=Ymin
+ if y1 > Ymax: y1=Ymax
+ else:
+ if y>lasty: y0, y1 = y, lasty
+ else: y0, y1 = lasty, y
+ if y0 > Ymin: y0=Ymin
+ if y1 < Ymax: y1=Ymax
if self._button_pressed == 1:
a.set_xlim((x0, x1))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|