appDisplay: Stop watching FolderIcon parent view when destroyed
When a FolderIcon is opened, it asks the parent view to allocate space for it, which takes time. Eventually, the space-ready signal is emitted on the view and the icon can make use of the new space with its popup. If the icon gets destroyed in the interim, though, space-ready signal handler still fires. This commit disconnects the signal handler so it doesn't get called on a destroyed icon. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/628
This commit is contained in:
parent
da9f37e629
commit
49260a85ad
@ -1155,6 +1155,11 @@ var FolderIcon = class FolderIcon {
|
|||||||
onDestroy() {
|
onDestroy() {
|
||||||
this.view.actor.destroy();
|
this.view.actor.destroy();
|
||||||
|
|
||||||
|
if (this._spaceReadySignalId) {
|
||||||
|
this._parentView.disconnect(this._spaceReadySignalId);
|
||||||
|
this._spaceReadySignalId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (this._popup)
|
if (this._popup)
|
||||||
this._popup.actor.destroy();
|
this._popup.actor.destroy();
|
||||||
}
|
}
|
||||||
@ -1226,8 +1231,9 @@ var FolderIcon = class FolderIcon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_openSpaceForPopup() {
|
_openSpaceForPopup() {
|
||||||
let id = this._parentView.connect('space-ready', () => {
|
this._spaceReadySignalId = this._parentView.connect('space-ready', () => {
|
||||||
this._parentView.disconnect(id);
|
this._parentView.disconnect(this._spaceReadySignalId);
|
||||||
|
this._spaceReadySignalId = 0;
|
||||||
this._popup.popup();
|
this._popup.popup();
|
||||||
this._updatePopupPosition();
|
this._updatePopupPosition();
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user