Skip to content

Commit 6cf05d0

Browse files
committed
Merge pull request matplotlib#2648 from JamesMakela/master
Update backend_webagg.py
2 parents 0ea037d + 0db1a9c commit 6cf05d0

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

lib/matplotlib/backends/backend_webagg.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import tornado
2929
except ImportError:
3030
raise RuntimeError("The WebAgg backend requires Tornado.")
31+
3132
import tornado.web
3233
import tornado.ioloop
3334
import tornado.websocket
@@ -254,7 +255,9 @@ def open(self, fignum):
254255
self.set_nodelay(True)
255256

256257
def on_close(self):
257-
Gcf.get_fig_manager(self.fignum).remove_web_socket(self)
258+
manager = Gcf.get_fig_manager(self.fignum)
259+
if manager is not None:
260+
manager.remove_web_socket(self)
258261

259262
def on_message(self, message):
260263
message = json.loads(message)
@@ -265,7 +268,11 @@ def on_message(self, message):
265268
self.supports_binary = message['value']
266269
else:
267270
manager = Gcf.get_fig_manager(self.fignum)
268-
manager.handle_json(message)
271+
# It is possible for a figure to be closed,
272+
# but a stale figure UI is still sending messages
273+
# from the browser.
274+
if manager is not None:
275+
manager.handle_json(message)
269276

270277
def send_json(self, content):
271278
self.write_message(json.dumps(content))

lib/matplotlib/backends/web_backend/mpl.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ mpl.figure.prototype.toolbar_button_onclick = function(name) {
396396
if (name == 'download') {
397397
var format_dropdown = this.format_dropdown;
398398
var format = format_dropdown.options[format_dropdown.selectedIndex].value;
399-
this.ondownload(figure, format);
399+
this.ondownload(this, format);
400400
} else {
401401
this.send_message("toolbar_button", {name: name});
402402
}

0 commit comments

Comments
 (0)