appDisplay: Clear AllView reference to current popup when destroyed
AllView contains a reference to the current popup that lingers after the popup is destroyed. This commit fixes that, by explicitly nullifying when appropriate. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/628
This commit is contained in:
parent
8e75d81a44
commit
164f3fa3fd
@ -285,6 +285,7 @@ var AllView = class AllView extends BaseAppView {
|
|||||||
this._eventBlocker.add_action(this._clickAction);
|
this._eventBlocker.add_action(this._clickAction);
|
||||||
|
|
||||||
this._displayingPopup = false;
|
this._displayingPopup = false;
|
||||||
|
this._currentPopupDestroyId = 0;
|
||||||
|
|
||||||
this._availWidth = 0;
|
this._availWidth = 0;
|
||||||
this._availHeight = 0;
|
this._availHeight = 0;
|
||||||
@ -574,7 +575,22 @@ var AllView = class AllView extends BaseAppView {
|
|||||||
this._stack.add_actor(popup.actor);
|
this._stack.add_actor(popup.actor);
|
||||||
popup.connect('open-state-changed', (popup, isOpen) => {
|
popup.connect('open-state-changed', (popup, isOpen) => {
|
||||||
this._eventBlocker.reactive = isOpen;
|
this._eventBlocker.reactive = isOpen;
|
||||||
this._currentPopup = isOpen ? popup : null;
|
|
||||||
|
if (this._currentPopup) {
|
||||||
|
this._currentPopup.actor.disconnect(this._currentPopupDestroyId);
|
||||||
|
this._currentPopupDestroyId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._currentPopup = null;
|
||||||
|
|
||||||
|
if (isOpen) {
|
||||||
|
this._currentPopup = popup;
|
||||||
|
this._currentPopupDestroyId = popup.actor.connect('destroy', () => {
|
||||||
|
this._currentPopup = null;
|
||||||
|
this._currentPopupDestroyId = 0;
|
||||||
|
this._eventBlocker.reactive = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
this._updateIconOpacities(isOpen);
|
this._updateIconOpacities(isOpen);
|
||||||
if (!isOpen)
|
if (!isOpen)
|
||||||
this._closeSpaceForPopup();
|
this._closeSpaceForPopup();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user