| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
|
||
| def drag_pan(self, event): | ||
| """Callback for dragging in pan/zoom mode.""" | ||
| if self._pan_info.button not in event.buttons: |
There was a problem hiding this comment.
Shouldn't this be an exact match? I believe the action should terminate as soon as any button is pressed or released.
Sorry, something went wrong.
There was a problem hiding this comment.
Sure, I don't really mind either way.
Sorry, something went wrong.
There was a problem hiding this comment.
Actually, the test failures appear relevant.
Sorry, something went wrong.
|
Indeed, should be fixed now (synthetic events in tests needed some adjustment). |
Sorry, something went wrong.
Sometimes, the mouse_release_event ending a pan/zoom can be lost, if it
occurs while the canvas does not have focus (a typical case is when a
context menu is implemented on top of the canvas, see example below);
this can result in rather confusing behavior as the pan/zoom continues
which no mouse button is pressed. To fix this, always check that the
correct button is still pressed in the motion_notify_event handlers.
To test, use e.g.
```
from matplotlib import pyplot as plt
from matplotlib.backends.qt_compat import QtWidgets
def on_button_press(event):
if event.button != 3: # Right-click.
return
menu = QtWidgets.QMenu()
menu.addAction("Some menu action", lambda: None)
menu.exec(event.guiEvent.globalPosition().toPoint())
fig = plt.figure()
fig.canvas.mpl_connect("button_press_event", on_button_press)
fig.add_subplot()
plt.show()
```
enter pan/zoom mode, right-click to open the context menu, exit the
menu, and continue moving the mouse.
| Back | FazBrowse Home | New Git URL |
Sometimes, the mouse_release_event ending a pan/zoom can be lost, if it occurs while the canvas does not have focus (a typical case is when a context menu is implemented on top of the canvas, see example below); this can result in rather confusing behavior as the pan/zoom continues which no mouse button is pressed. To fix this, always check that the correct button is still pressed in the motion_notify_event handlers.
To test, use e.g.
from matplotlib import pyplot as plt from matplotlib.backends.qt_compat import QtWidgets def on_button_press(event): if event.button != 3: # Right-click. return menu = QtWidgets.QMenu() menu.addAction("Some menu action", lambda: None) menu.exec(event.guiEvent.globalPosition().toPoint()) fig = plt.figure() fig.canvas.mpl_connect("button_press_event", on_button_press) fig.add_subplot() plt.show()enter pan/zoom mode, right-click to open the context menu, exit the menu, and continue moving the mouse.
Followup to #28453 (and the original motivation for it).
PR summary
PR checklist