Skip to content

Commit b7c09d5

Browse files
committed
Move lastevent handling to LocationEvent.process.
1 parent b5763fa commit b7c09d5

File tree

1 file changed

+12
-25
lines changed

1 file changed

+12
-25
lines changed

lib/matplotlib/backend_bases.py

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,7 @@ class LocationEvent(Event):
12901290
y data coordinate of the mouse.
12911291
"""
12921292

1293-
lastevent = None # the last event that was triggered before this one
1293+
lastevent = None # The last event processed so far.
12941294

12951295
def __init__(self, name, canvas, x, y, guiEvent=None):
12961296
"""
@@ -1307,7 +1307,6 @@ def __init__(self, name, canvas, x, y, guiEvent=None):
13071307

13081308
if x is None or y is None:
13091309
# cannot check if event was in axes if no (x, y) info
1310-
self._update_enter_leave()
13111310
return
13121311

13131312
if self.canvas.mouse_grabber is None:
@@ -1325,33 +1324,21 @@ def __init__(self, name, canvas, x, y, guiEvent=None):
13251324
self.xdata = xdata
13261325
self.ydata = ydata
13271326

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:
13361332
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)
13391334
except Exception:
1335+
# The last canvas may already have been torn down.
13401336
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
13511337
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()
13551342

13561343

13571344
class MouseButton(IntEnum):

0 commit comments

Comments
 (0)