popupMenu: Make sure to disconnect open-state-changed when the menu item dies

This commit is contained in:
Jasper St. Pierre 2013-08-06 10:30:18 -04:00
parent a8ea6c2c66
commit 41117578c5

View File

@ -872,7 +872,11 @@ const PopupMenuBase = new Lang.Class({
// separator's adjacent siblings change visibility or position. // separator's adjacent siblings change visibility or position.
// open-state-changed isn't exactly that, but doing it in more // open-state-changed isn't exactly that, but doing it in more
// precise ways would require a lot more bookkeeping. // 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) } else if (menuItem instanceof PopupBaseMenuItem)
this._connectItemSignals(menuItem); this._connectItemSignals(menuItem);
else else