@@ -2359,16 +2359,16 @@ def _release(self, event):
23592359 self .to_draw .set_visible (False )
23602360
23612361 # update the eventpress and eventrelease with the resulting extents
2362- x1 , x2 , y1 , y2 = self .extents
2363- self .eventpress .xdata = x1
2364- self .eventpress .ydata = y1
2362+ x0 , x1 , y0 , y1 = self .extents
2363+ self .eventpress .xdata = x0
2364+ self .eventpress .ydata = y0
2365+ xy0 = self .ax .transData .transform ([x0 , y0 ])
2366+ self .eventpress .x , self .eventpress .y = xy0
2367+
2368+ self .eventrelease .xdata = x1
2369+ self .eventrelease .ydata = y1
23652370 xy1 = self .ax .transData .transform ([x1 , y1 ])
2366- self .eventpress .x , self .eventpress .y = xy1
2367-
2368- self .eventrelease .xdata = x2
2369- self .eventrelease .ydata = y2
2370- xy2 = self .ax .transData .transform ([x2 , y2 ])
2371- self .eventrelease .x , self .eventrelease .y = xy2
2371+ self .eventrelease .x , self .eventrelease .y = xy1
23722372
23732373 # calculate dimensions of box or line
23742374 if self .spancoords == 'data' :
@@ -2400,22 +2400,22 @@ def _onmove(self, event):
24002400 """Motion notify event handler."""
24012401 # resize an existing shape
24022402 if self .active_handle and self .active_handle != 'C' :
2403- x1 , x2 , y1 , y2 = self ._extents_on_press
2403+ x0 , x1 , y0 , y1 = self ._extents_on_press
24042404 if self .active_handle in ['E' , 'W' ] + self ._corner_order :
2405- x2 = event .xdata
2405+ x1 = event .xdata
24062406 if self .active_handle in ['N' , 'S' ] + self ._corner_order :
2407- y2 = event .ydata
2407+ y1 = event .ydata
24082408
24092409 # move existing shape
24102410 elif (('move' in self .state or self .active_handle == 'C' )
24112411 and self ._extents_on_press is not None ):
2412- x1 , x2 , y1 , y2 = self ._extents_on_press
2412+ x0 , x1 , y0 , y1 = self ._extents_on_press
24132413 dx = event .xdata - self .eventpress .xdata
24142414 dy = event .ydata - self .eventpress .ydata
2415+ x0 += dx
24152416 x1 += dx
2416- x2 += dx
2417+ y0 += dy
24172418 y1 += dy
2418- y2 += dy
24192419
24202420 # new shape
24212421 else :
@@ -2446,10 +2446,10 @@ def _onmove(self, event):
24462446 center [0 ] += dx
24472447 center [1 ] += dy
24482448
2449- x1 , x2 , y1 , y2 = (center [0 ] - dx , center [0 ] + dx ,
2449+ x0 , x1 , y0 , y1 = (center [0 ] - dx , center [0 ] + dx ,
24502450 center [1 ] - dy , center [1 ] + dy )
24512451
2452- self .extents = x1 , x2 , y1 , y2
2452+ self .extents = x0 , x1 , y0 , y1
24532453
24542454 @property
24552455 def _rect_bbox (self ):
@@ -2552,13 +2552,13 @@ def _set_active_handle(self, event):
25522552 self .active_handle = self ._edge_order [e_idx ]
25532553
25542554 # Save coordinates of rectangle at the start of handle movement.
2555- x1 , x2 , y1 , y2 = self .extents
2556- # Switch variables so that only x2 and/or y2 are updated on move.
2555+ x0 , x1 , y0 , y1 = self .extents
2556+ # Switch variables so that only x1 and/or y1 are updated on move.
25572557 if self .active_handle in ['W' , 'SW' , 'NW' ]:
2558- x1 , x2 = x2 , event .xdata
2558+ x0 , x1 = x1 , event .xdata
25592559 if self .active_handle in ['N' , 'NW' , 'NE' ]:
2560- y1 , y2 = y2 , event .ydata
2561- self ._extents_on_press = x1 , x2 , y1 , y2
2560+ y0 , y1 = y1 , event .ydata
2561+ self ._extents_on_press = x0 , x1 , y0 , y1
25622562
25632563 @property
25642564 def geometry (self ):
@@ -2616,10 +2616,10 @@ def toggle_selector(event):
26162616 _shape_klass = Ellipse
26172617
26182618 def draw_shape (self , extents ):
2619- x1 , x2 , y1 , y2 = extents
2620- xmin , xmax = sorted ([x1 , x2 ])
2621- ymin , ymax = sorted ([y1 , y2 ])
2622- center = [x1 + (x2 - x1 ) / 2. , y1 + (y2 - y1 ) / 2. ]
2619+ x0 , x1 , y0 , y1 = extents
2620+ xmin , xmax = sorted ([x0 , x1 ])
2621+ ymin , ymax = sorted ([y0 , y1 ])
2622+ center = [x0 + (x1 - x0 ) / 2. , y0 + (y1 - y0 ) / 2. ]
26232623 a = (xmax - xmin ) / 2.
26242624 b = (ymax - ymin ) / 2.
26252625
0 commit comments