From 41117578c5a6555aeb02663263ec476a8e3b2d82 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Tue, 6 Aug 2013 10:30:18 -0400 Subject: [PATCH] popupMenu: Make sure to disconnect open-state-changed when the menu item dies --- js/ui/popupMenu.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 57d9b49e2..fce1d2fd7 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -872,7 +872,11 @@ const PopupMenuBase = new Lang.Class({ // separator's adjacent siblings change visibility or position. // open-state-changed isn't exactly that, but doing it in more // precise ways would require a lot more bookkeeping. - this.connect('open-state-changed', Lang.bind(this, function() { this._updateSeparatorVisibility(menuItem); })); + let openStateChangeId = this.connect('open-state-changed', Lang.bind(this, function() { this._updateSeparatorVisibility(menuItem); })); + let destroyId = menuItem.connect('destroy', Lang.bind(this, function() { + this.disconnect(openStateChangeId); + menuItem.disconnect(destroyId); + })); } else if (menuItem instanceof PopupBaseMenuItem) this._connectItemSignals(menuItem); else