diff --git a/js/ui/appMenu.js b/js/ui/appMenu.js index ae6aa16a0..42c92a422 100644 --- a/js/ui/appMenu.js +++ b/js/ui/appMenu.js @@ -55,8 +55,12 @@ var AppMenu = class AppMenu extends PopupMenu.PopupMenu { this.addAction(_('Quit'), () => this._app.request_quit()); - this._appSystem.connect('installed-changed', - () => this._updateDetailsVisibility()); + this._signals = []; + this._signals.push([ + this._appSystem, + this._appSystem.connect('installed-changed', + () => this._updateDetailsVisibility()), + ]); this._updateDetailsVisibility(); } @@ -65,6 +69,17 @@ var AppMenu = class AppMenu extends PopupMenu.PopupMenu { this._detailsItem.visible = sw !== null; } + /** */ + destroy() { + super.destroy(); + + for (const [obj, id] of this._signals) + obj.disconnect(id); + this._signals = []; + + this.setApp(null); + } + /** * @returns {bool} - true if the menu is empty */