@@ -1350,7 +1350,7 @@ class LocationEvent(Event):
1350
1350
y data coordinate of the mouse.
1351
1351
"""
1352
1352
1353
- lastevent = None # the last event that was triggered before this one
1353
+ lastevent = None # The last event processed so far.
1354
1354
1355
1355
def __init__ (self , name , canvas , x , y , guiEvent = None ):
1356
1356
"""
@@ -1367,7 +1367,6 @@ def __init__(self, name, canvas, x, y, guiEvent=None):
1367
1367
1368
1368
if x is None or y is None :
1369
1369
# cannot check if event was in axes if no (x, y) info
1370
- self ._update_enter_leave ()
1371
1370
return
1372
1371
1373
1372
if self .canvas .mouse_grabber is None :
@@ -1385,33 +1384,21 @@ def __init__(self, name, canvas, x, y, guiEvent=None):
1385
1384
self .xdata = xdata
1386
1385
self .ydata = ydata
1387
1386
1388
- self ._update_enter_leave ()
1389
-
1390
- def _update_enter_leave (self ):
1391
- """Process the figure/axes enter leave events."""
1392
- if LocationEvent .lastevent is not None :
1393
- last = LocationEvent .lastevent
1394
- if last .inaxes != self .inaxes :
1395
- # process axes enter/leave events
1387
+ def process (self ):
1388
+ last = LocationEvent .lastevent
1389
+ last_axes = last .inaxes if last is not None else None
1390
+ if last_axes != self .inaxes :
1391
+ if last_axes is not None :
1396
1392
try :
1397
- if last .inaxes is not None :
1398
- last .canvas .callbacks .process ('axes_leave_event' , last )
1393
+ last .canvas .callbacks .process ("axes_leave_event" , last )
1399
1394
except Exception :
1395
+ # The last canvas may already have been torn down.
1400
1396
pass
1401
- # See ticket 2901582.
1402
- # I think this is a valid exception to the rule
1403
- # against catching all exceptions; if anything goes
1404
- # wrong, we simply want to move on and process the
1405
- # current event.
1406
- if self .inaxes is not None :
1407
- self .canvas .callbacks .process ('axes_enter_event' , self )
1408
-
1409
- else :
1410
- # process a figure enter event
1411
1397
if self .inaxes is not None :
1412
- self .canvas .callbacks .process ('axes_enter_event' , self )
1413
-
1414
- LocationEvent .lastevent = self
1398
+ self .canvas .callbacks .process ("axes_enter_event" , self )
1399
+ LocationEvent .lastevent = (
1400
+ None if self .name == "figure_leave_event" else self )
1401
+ super ().process ()
1415
1402
1416
1403
1417
1404
class MouseButton (IntEnum ):
0 commit comments