@@ -1290,7 +1290,7 @@ class LocationEvent(Event):
1290
1290
y data coordinate of the mouse.
1291
1291
"""
1292
1292
1293
- lastevent = None # the last event that was triggered before this one
1293
+ lastevent = None # The last event processed so far.
1294
1294
1295
1295
def __init__ (self , name , canvas , x , y , guiEvent = None ):
1296
1296
"""
@@ -1307,7 +1307,6 @@ def __init__(self, name, canvas, x, y, guiEvent=None):
1307
1307
1308
1308
if x is None or y is None :
1309
1309
# cannot check if event was in axes if no (x, y) info
1310
- self ._update_enter_leave ()
1311
1310
return
1312
1311
1313
1312
if self .canvas .mouse_grabber is None :
@@ -1325,33 +1324,21 @@ def __init__(self, name, canvas, x, y, guiEvent=None):
1325
1324
self .xdata = xdata
1326
1325
self .ydata = ydata
1327
1326
1328
- self ._update_enter_leave ()
1329
-
1330
- def _update_enter_leave (self ):
1331
- """Process the figure/axes enter leave events."""
1332
- if LocationEvent .lastevent is not None :
1333
- last = LocationEvent .lastevent
1334
- if last .inaxes != self .inaxes :
1335
- # process axes enter/leave events
1327
+ def process (self ):
1328
+ last = LocationEvent .lastevent
1329
+ last_axes = last .inaxes if last is not None else None
1330
+ if last_axes != self .inaxes :
1331
+ if last_axes is not None :
1336
1332
try :
1337
- if last .inaxes is not None :
1338
- last .canvas .callbacks .process ('axes_leave_event' , last )
1333
+ last .canvas .callbacks .process ("axes_leave_event" , last )
1339
1334
except Exception :
1335
+ # The last canvas may already have been torn down.
1340
1336
pass
1341
- # See ticket 2901582.
1342
- # I think this is a valid exception to the rule
1343
- # against catching all exceptions; if anything goes
1344
- # wrong, we simply want to move on and process the
1345
- # current event.
1346
- if self .inaxes is not None :
1347
- self .canvas .callbacks .process ('axes_enter_event' , self )
1348
-
1349
- else :
1350
- # process a figure enter event
1351
1337
if self .inaxes is not None :
1352
- self .canvas .callbacks .process ('axes_enter_event' , self )
1353
-
1354
- LocationEvent .lastevent = self
1338
+ self .canvas .callbacks .process ("axes_enter_event" , self )
1339
+ LocationEvent .lastevent = (
1340
+ None if self .name == "figure_leave_event" else self )
1341
+ super ().process ()
1355
1342
1356
1343
1357
1344
class MouseButton (IntEnum ):
0 commit comments