Skip to content

Commit 534077d

Browse files
authored
Merge pull request #24250 from QuLogic/pick-event
Fix key reporting in pick events
2 parents b298423 + 9b34b25 commit 534077d

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

lib/matplotlib/figure.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2445,10 +2445,6 @@ def __init__(self,
24452445
# pickling.
24462446
self._canvas_callbacks = cbook.CallbackRegistry(
24472447
signals=FigureCanvasBase.events)
2448-
self._button_pick_id = self._canvas_callbacks._connect_picklable(
2449-
'button_press_event', self.pick)
2450-
self._scroll_pick_id = self._canvas_callbacks._connect_picklable(
2451-
'scroll_event', self.pick)
24522448
connect = self._canvas_callbacks._connect_picklable
24532449
self._mouse_key_ids = [
24542450
connect('key_press_event', backend_bases._key_handler),
@@ -2459,6 +2455,8 @@ def __init__(self,
24592455
connect('scroll_event', backend_bases._mouse_handler),
24602456
connect('motion_notify_event', backend_bases._mouse_handler),
24612457
]
2458+
self._button_pick_id = connect('button_press_event', self.pick)
2459+
self._scroll_pick_id = connect('scroll_event', self.pick)
24622460

24632461
if figsize is None:
24642462
figsize = mpl.rcParams['figure.figsize']

lib/matplotlib/tests/test_backend_bases.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from matplotlib import path, transforms
44
from matplotlib.backend_bases import (
5-
FigureCanvasBase, LocationEvent, MouseButton, MouseEvent,
5+
FigureCanvasBase, KeyEvent, LocationEvent, MouseButton, MouseEvent,
66
NavigationToolbar2, RendererBase)
77
from matplotlib.backend_tools import RubberbandBase
88
from matplotlib.figure import Figure
@@ -124,12 +124,18 @@ def test_pick():
124124
fig = plt.figure()
125125
fig.text(.5, .5, "hello", ha="center", va="center", picker=True)
126126
fig.canvas.draw()
127+
127128
picks = []
128-
fig.canvas.mpl_connect("pick_event", lambda event: picks.append(event))
129-
start_event = MouseEvent(
130-
"button_press_event", fig.canvas, *fig.transFigure.transform((.5, .5)),
131-
MouseButton.LEFT)
132-
fig.canvas.callbacks.process(start_event.name, start_event)
129+
def handle_pick(event):
130+
assert event.mouseevent.key == "a"
131+
picks.append(event)
132+
fig.canvas.mpl_connect("pick_event", handle_pick)
133+
134+
KeyEvent("key_press_event", fig.canvas, "a")._process()
135+
MouseEvent("button_press_event", fig.canvas,
136+
*fig.transFigure.transform((.5, .5)),
137+
MouseButton.LEFT)._process()
138+
KeyEvent("key_release_event", fig.canvas, "a")._process()
133139
assert len(picks) == 1
134140

135141

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy