diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 49ed823b1..b5eb9928a 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -804,6 +804,7 @@ var PopupMenu = class extends PopupMenuBase { this._keyPressId = this.sourceActor.connect('key-press-event', this._onKeyPress.bind(this)); + this._systemModalOpenedId = 0; this._openedSubMenu = null; } @@ -878,6 +879,11 @@ var PopupMenu = class extends PopupMenuBase { if (this.isEmpty()) return; + if (!this._systemModalOpenedId) { + this._systemModalOpenedId = + Main.layoutManager.connect('system-modal-opened', () => this.close()); + } + this.isOpen = true; this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment); @@ -908,6 +914,11 @@ var PopupMenu = class extends PopupMenuBase { destroy() { if (this._keyPressId) this.sourceActor.disconnect(this._keyPressId); + + if (this._systemModalOpenedId) + Main.layoutManager.disconnect(this._systemModalOpenedId); + this._systemModalOpenedId = 0; + super.destroy(); } };