Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 03c1eb5

Browse filesBrowse files
authored
Merge pull request #7752 from newville/master
bugfix for wx backend: release mouse on loss of focus and before trying to recapture
2 parents 0223e27 + 7cedabc commit 03c1eb5
Copy full SHA for 03c1eb5

File tree

Expand file treeCollapse file tree

1 file changed

+23
-12
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+23
-12
lines changed

‎lib/matplotlib/backends/backend_wx.py

Copy file name to clipboardExpand all lines: lib/matplotlib/backends/backend_wx.py
+23-12Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,9 @@ def do_nothing(*args, **kwargs):
685685
self.Bind(wx.EVT_MIDDLE_DCLICK, self._onMiddleButtonDClick)
686686
self.Bind(wx.EVT_MIDDLE_UP, self._onMiddleButtonUp)
687687

688+
self.Bind(wx.EVT_MOUSE_CAPTURE_CHANGED, self._onCaptureLost)
689+
self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self._onCaptureLost)
690+
688691
if wx.VERSION_STRING < "2.9":
689692
# only needed in 2.8 to reduce flicker
690693
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
@@ -1023,20 +1026,31 @@ def _onKeyUp(self, evt):
10231026
evt.Skip()
10241027
FigureCanvasBase.key_release_event(self, key, guiEvent=evt)
10251028

1029+
def _set_capture(self, capture=True):
1030+
"""control wx mouse capture """
1031+
if self.HasCapture():
1032+
self.ReleaseMouse()
1033+
if capture:
1034+
self.CaptureMouse()
1035+
1036+
def _onCaptureLost(self, evt):
1037+
"""Capture changed or lost"""
1038+
self._set_capture(False)
1039+
10261040
def _onRightButtonDown(self, evt):
10271041
"""Start measuring on an axis."""
10281042
x = evt.GetX()
10291043
y = self.figure.bbox.height - evt.GetY()
10301044
evt.Skip()
1031-
self.CaptureMouse()
1045+
self._set_capture(True)
10321046
FigureCanvasBase.button_press_event(self, x, y, 3, guiEvent=evt)
10331047

10341048
def _onRightButtonDClick(self, evt):
10351049
"""Start measuring on an axis."""
10361050
x = evt.GetX()
10371051
y = self.figure.bbox.height - evt.GetY()
10381052
evt.Skip()
1039-
self.CaptureMouse()
1053+
self._set_capture(True)
10401054
FigureCanvasBase.button_press_event(self, x, y, 3,
10411055
dblclick=True, guiEvent=evt)
10421056

@@ -1045,24 +1059,23 @@ def _onRightButtonUp(self, evt):
10451059
x = evt.GetX()
10461060
y = self.figure.bbox.height - evt.GetY()
10471061
evt.Skip()
1048-
if self.HasCapture():
1049-
self.ReleaseMouse()
1062+
self._set_capture(False)
10501063
FigureCanvasBase.button_release_event(self, x, y, 3, guiEvent=evt)
10511064

10521065
def _onLeftButtonDown(self, evt):
10531066
"""Start measuring on an axis."""
10541067
x = evt.GetX()
10551068
y = self.figure.bbox.height - evt.GetY()
10561069
evt.Skip()
1057-
self.CaptureMouse()
1070+
self._set_capture(True)
10581071
FigureCanvasBase.button_press_event(self, x, y, 1, guiEvent=evt)
10591072

10601073
def _onLeftButtonDClick(self, evt):
10611074
"""Start measuring on an axis."""
10621075
x = evt.GetX()
10631076
y = self.figure.bbox.height - evt.GetY()
10641077
evt.Skip()
1065-
self.CaptureMouse()
1078+
self._set_capture(True)
10661079
FigureCanvasBase.button_press_event(self, x, y, 1,
10671080
dblclick=True, guiEvent=evt)
10681081

@@ -1072,8 +1085,7 @@ def _onLeftButtonUp(self, evt):
10721085
y = self.figure.bbox.height - evt.GetY()
10731086
# print 'release button', 1
10741087
evt.Skip()
1075-
if self.HasCapture():
1076-
self.ReleaseMouse()
1088+
self._set_capture(False)
10771089
FigureCanvasBase.button_release_event(self, x, y, 1, guiEvent=evt)
10781090

10791091
# Add middle button events
@@ -1082,15 +1094,15 @@ def _onMiddleButtonDown(self, evt):
10821094
x = evt.GetX()
10831095
y = self.figure.bbox.height - evt.GetY()
10841096
evt.Skip()
1085-
self.CaptureMouse()
1097+
self._set_capture(True)
10861098
FigureCanvasBase.button_press_event(self, x, y, 2, guiEvent=evt)
10871099

10881100
def _onMiddleButtonDClick(self, evt):
10891101
"""Start measuring on an axis."""
10901102
x = evt.GetX()
10911103
y = self.figure.bbox.height - evt.GetY()
10921104
evt.Skip()
1093-
self.CaptureMouse()
1105+
self._set_capture(True)
10941106
FigureCanvasBase.button_press_event(self, x, y, 2,
10951107
dblclick=True, guiEvent=evt)
10961108

@@ -1100,8 +1112,7 @@ def _onMiddleButtonUp(self, evt):
11001112
y = self.figure.bbox.height - evt.GetY()
11011113
# print 'release button', 1
11021114
evt.Skip()
1103-
if self.HasCapture():
1104-
self.ReleaseMouse()
1115+
self._set_capture(False)
11051116
FigureCanvasBase.button_release_event(self, x, y, 2, guiEvent=evt)
11061117

11071118
def _onMouseWheel(self, evt):

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.