Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0c3c37d

Browse files
authored
Merge pull request #18176 from meeseeksmachine/auto-backport-of-pr-18173-on-v3.3.x
Backport PR #18173 on branch v3.3.x (Fix the return value of Axes.get_navigate_mode.)
2 parents 9ca7245 + ff98c22 commit 0c3c37d

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

lib/matplotlib/backend_bases.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2777,6 +2777,10 @@ class _Mode(str, Enum):
27772777
def __str__(self):
27782778
return self.value
27792779

2780+
@property
2781+
def _navigate_mode(self):
2782+
return self.name if self is not _Mode.NONE else None
2783+
27802784

27812785
class NavigationToolbar2:
27822786
"""
@@ -3035,7 +3039,7 @@ def pan(self, *args):
30353039
self.mode = _Mode.PAN
30363040
self.canvas.widgetlock(self)
30373041
for a in self.canvas.figure.get_axes():
3038-
a.set_navigate_mode(self.mode)
3042+
a.set_navigate_mode(self.mode._navigate_mode)
30393043
self.set_message(self.mode)
30403044

30413045
def press_pan(self, event):
@@ -3105,7 +3109,7 @@ def zoom(self, *args):
31053109
self.mode = _Mode.ZOOM
31063110
self.canvas.widgetlock(self)
31073111
for a in self.canvas.figure.get_axes():
3108-
a.set_navigate_mode(self.mode)
3112+
a.set_navigate_mode(self.mode._navigate_mode)
31093113
self.set_message(self.mode)
31103114

31113115
def press_zoom(self, event):

lib/matplotlib/tests/test_backend_bases.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,11 @@ def test_location_event_position(x, y):
107107
def test_interactive_zoom():
108108
fig, ax = plt.subplots()
109109
ax.set(xscale="logit")
110+
assert ax.get_navigate_mode() is None
110111

111112
tb = NavigationToolbar2(fig.canvas)
112113
tb.zoom()
114+
assert ax.get_navigate_mode() == 'ZOOM'
113115

114116
xlim0 = ax.get_xlim()
115117
ylim0 = ax.get_ylim()
@@ -143,3 +145,6 @@ def test_interactive_zoom():
143145
# Absolute tolerance much less than original xmin (1e-7).
144146
assert ax.get_xlim() == pytest.approx(xlim0, rel=0, abs=1e-10)
145147
assert ax.get_ylim() == pytest.approx(ylim0, rel=0, abs=1e-10)
148+
149+
tb.zoom()
150+
assert ax.get_navigate_mode() is None

0 commit comments

Comments
 (0)