8000 Support forward/backward mouse buttons · matplotlib/matplotlib@8e7db60 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8e7db60

Browse files
committed
Support forward/backward mouse buttons
1 parent f093129 commit 8e7db60

File tree

2 files changed

+40
-8
lines changed

2 files changed

+40
-8
lines changed

lib/matplotlib/backend_bases.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,6 +1372,8 @@ class MouseButton(IntEnum):
13721372
LEFT = 1
13731373
MIDDLE = 2
13741374
RIGHT = 3
1375+
X1 = 4
1376+
X2 = 5
13751377

13761378

13771379
class MouseEvent(LocationEvent):
@@ -2394,6 +2396,17 @@ def _get_uniform_gridstate(ticks):
23942396
a.set_navigate(i == n)
23952397

23962398

2399+
def button_press_handler(event, canvas, toolbar=None):
2400+
"""
2401+
The default Matplotlib button actions for extra mouse buttons.
2402+
"""
2403+
if toolbar is not None:
2404+
if event.button is MouseButton.X1:
2405+
toolbar.back()
2406+
elif event.button is MouseButton.X2:
2407+
toolbar.forward()
2408+
2409+
23972410
class NonGuiException(Exception):
23982411
pass
23992412

@@ -2411,22 +2424,34 @@ class FigureManagerBase(object):
24112424
The figure number
24122425
24132426
key_press_handler_id : int
2414-
The default key handler cid, when using the toolmanager. Can be used
2415-
to disable default key press handling ::
2427+
The default key handler cid, when using the toolmanager.
2428+
To disable the default key press handling use::
24162429
24172430
figure.canvas.mpl_disconnect(
24182431
figure.canvas.manager.key_press_handler_id)
2432+
2433+
button_press_handler_id : int
2434+
The default mouse button handler cid, when using the toolmanager.
2435+
To disable the default button press handling use::
2436+
2437+
figure.canvas.mpl_disconnect(
2438+
figure.canvas.manager.button_press_handler_id)
2439+
24192440
"""
24202441
def __init__(self, canvas, num):
24212442
self.canvas = canvas
24222443
canvas.manager = self # store a pointer to parent
24232444
self.num = num
24242445

24252446
self.key_press_handler_id = None
2447+
self.button_press_handler_id = None
24262448
if rcParams['toolbar'] != 'toolmanager':
24272449
self.key_press_handler_id = self.canvas.mpl_connect(
24282450
'key_press_event',
24292451
self.key_press)
2452+
self.button_press_handler_id = self.canvas.mpl_connect(
2453+
'button_press_event',
2454+
self.button_press)
24302455

24312456
self.toolmanager = None
24322457
self.toolbar = None
@@ -2463,6 +2488,13 @@ def key_press(self, event):
24632488
if rcParams['toolbar'] != 'toolmanager':
24642489
key_press_handler(event, self.canvas, self.canvas.toolbar)
24652490

2491+
def button_press(self, event):
2492+
"""
2493+
The default Matplotlib button actions for extra mouse buttons.
2494+
"""
2495+
if rcParams['toolbar'] != 'toolmanager':
2496+
button_press_handler(event, self.canvas, self.canvas.toolbar)
2497+
24662498
@cbook.deprecated("2.2")
24672499
def show_popup(self, msg):
24682500
"""Display message in a popup -- GUI only."""

lib/matplotlib/backends/backend_qt5.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from matplotlib._pylab_helpers import Gcf
1212
from matplotlib.backend_bases import (
1313
_Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2,
14-
TimerBase, cursors, ToolContainerBase, StatusbarBase)
14+
TimerBase, cursors, ToolContainerBase, StatusbarBase, MouseButton)
1515
import matplotlib.backends.qt_editor.figureoptions as figureoptions
1616
from matplotlib.backends.qt_editor.formsubplottool import UiSubplotTool
1717
from matplotlib.backend_managers import ToolManager
@@ -213,11 +213,11 @@ def _timer_stop(self):
213213
class FigureCanvasQT(QtWidgets.QWidget, FigureCanvasBase):
214214

215215
# map Qt button codes to MouseEvent's ones:
216-
buttond = {QtCore.Qt.LeftButton: 1,
217-
QtCore.Qt.MidButton: 2,
218-
QtCore.Qt.RightButton: 3,
219-
# QtCore.Qt.XButton1: None,
220-
# QtCore.Qt.XButton2: None,
216+
buttond = {QtCore.Qt.LeftButton: MouseButton.LEFT,
217+
QtCore.Qt.MidButton: MouseButton.MIDDLE,
218+
QtCore.Qt.RightButton: MouseButton.RIGHT,
219+
QtCore.Qt.XButton1: MouseButton.X1,
220+
QtCore.Qt.XButton2: MouseButton.X2,
221221
}
222222

223223
@_allow_super_init

0 commit comments

Comments
 (0)
0