diff --git a/ipympl/backend_nbagg.py b/ipympl/backend_nbagg.py index 0b083df8..57127590 100644 --- a/ipympl/backend_nbagg.py +++ b/ipympl/backend_nbagg.py @@ -119,7 +119,7 @@ def connection_info(): return '\n'.join(result) -class Toolbar(DOMWidget, NavigationToolbar2WebAgg): +class Toolbar(NavigationToolbar2WebAgg, DOMWidget): _model_module = Unicode('jupyter-matplotlib').tag(sync=True) _model_module_version = Unicode(js_semver).tag(sync=True) @@ -147,8 +147,8 @@ class Toolbar(DOMWidget, NavigationToolbar2WebAgg): _current_action = Enum(values=['pan', 'zoom', ''], default_value='').tag(sync=True) def __init__(self, canvas, *args, **kwargs): + NavigationToolbar2WebAgg.__init__(self, canvas) DOMWidget.__init__(self, *args, **kwargs) - NavigationToolbar2WebAgg.__init__(self, canvas, *args, **kwargs) self.on_msg(self.canvas._handle_message) diff --git a/tests/test_backend_nbagg.py b/tests/test_backend_nbagg.py new file mode 100644 index 00000000..ae6c7c8e --- /dev/null +++ b/tests/test_backend_nbagg.py @@ -0,0 +1,16 @@ +import warnings + +import matplotlib + + +def test_toolbar_initialization_does_not_warn(): + """Toolbar initialization should not pass canvas through Traitlets.""" + matplotlib.use("module://ipympl.backend_nbagg") + import matplotlib.pyplot as plt + + with warnings.catch_warnings(): + warnings.simplefilter("error", DeprecationWarning) + fig, ax = plt.subplots() + + assert fig.canvas.toolbar is not None + plt.close(fig)