@@ -623,6 +623,7 @@ def clear(self, event):
623623 self .lineh .set_visible (False )
624624
625625 def onmove (self , event ):
626+
626627 if event .inaxes != self .ax :
627628 self .linev .set_visible (False )
628629 self .lineh .set_visible (False )
@@ -632,7 +633,7 @@ def onmove(self, event):
632633 self .needclear = False
633634 return
634635 self .needclear = True
635-
636+ if not self . visible : return
636637 self .linev .set_xdata ((event .xdata , event .xdata ))
637638 self .lineh .set_ydata ((event .ydata , event .ydata ))
638639 self .linev .set_visible (self .visible and self .vertOn )
@@ -694,6 +695,7 @@ def __init__(self, ax, onselect, minspan=None, useblit=False, rectprops=None):
694695 self .canvas .mpl_connect ('motion_notify_event' , self .onmove )
695696 self .canvas .mpl_connect ('button_press_event' , self .press )
696697 self .canvas .mpl_connect ('button_release_event' , self .release )
698+ self .canvas .mpl_connect ('draw_event' , self .update_background )
697699
698700 self .rect = None
699701 self .background = None
@@ -708,25 +710,27 @@ def __init__(self, ax, onselect, minspan=None, useblit=False, rectprops=None):
708710 self .rect = Rectangle ( (0 ,0 ), 0 , 1 ,
709711 transform = trans ,
710712 visible = False ,
711- ** self .rectprops
713+ ** self .rectprops
712714 )
713- self .ax .add_patch (self .rect )
714715
715- def update_background (self ):
716+ if not self .useblit : self .ax .add_patch (self .rect )
717+
718+ def update_background (self , event ):
716719 'force an update of the background'
717- self .background = self .canvas .copy_from_bbox (self .ax .bbox )
720+ if self .useblit :
721+ self .background = self .canvas .copy_from_bbox (self .ax .bbox )
718722
723+
719724 def ignore (self , event ):
720725 'return True if event should be ignored'
721726 return event .inaxes != self .ax or not self .visible or event .button != 1
722727
723728 def press (self , event ):
724729 'on button press event'
725730 if self .ignore (event ): return
726- self . background = self . canvas . copy_from_bbox ( self . ax . bbox )
731+
727732 self .rect .set_visible (self .visible )
728733 self .pressx = event .xdata
729- print 'ressx' , self .pressx
730734 return False
731735
732736
@@ -736,8 +740,9 @@ def release(self, event):
736740
737741 self .rect .set_visible (False )
738742 self .canvas .draw ()
739- xmin = self .rect .xy [0 ]
740- xmax = xmin + self .rect .get_width ()
743+ xmin = self .pressx
744+ xmax = event .xdata
745+ if xmin > xmax : xmin , xmax = xmax , xmin
741746 span = xmax - xmin
742747 if self .minspan is not None and span < self .minspan : return
743748 self .onselect (xmin , xmax )
0 commit comments