Skip to content

Commit e22adcd

Browse files
authored
Merge pull request #24255 from meeseeksmachine/auto-backport-of-pr-24250-on-v3.6.x
Backport PR #24250 on branch v3.6.x (Fix key reporting in pick events)
2 parents d7f7b96 + 5c661e3 commit e22adcd

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
@@ -2443,10 +2443,6 @@ def __init__(self,
24432443
# pickling.
24442444
self._canvas_callbacks = cbook.CallbackRegistry(
24452445
signals=FigureCanvasBase.events)
2446-
self._button_pick_id = self._canvas_callbacks._connect_picklable(
2447-
'button_press_event', self.pick)
2448-
self._scroll_pick_id = self._canvas_callbacks._connect_picklable(
2449-
'scroll_event', self.pick)
24502446
connect = self._canvas_callbacks._connect_picklable
24512447
self._mouse_key_ids = [
24522448
connect('key_press_event', backend_bases._key_handler),
@@ -2457,6 +2453,8 @@ def __init__(self,
24572453
connect('scroll_event', backend_bases._mouse_handler),
24582454
connect('motion_notify_event', backend_bases._mouse_handler),
24592455
]
2456+
self._button_pick_id = connect('button_press_event', self.pick)
2457+
self._scroll_pick_id = connect('scroll_event', self.pick)
24602458

24612459
if figsize is None:
24622460
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