appDisplay: Add destroy handler for FolderIcon
It is important that the FolderView of a FolderIcon always gets destroyed before the AppFolderPopup, since the view may or may not be in the popup, and the view should get cleaned up exactly once in either case. This commit adds a destroy handler on FolderIcon to ensure things get taken down in the right order, and to make sure the view isn't leaked if it's not yet part of the popup. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/628
This commit is contained in:
parent
164f3fa3fd
commit
da9f37e629
@ -1142,6 +1142,7 @@ var FolderIcon = class FolderIcon {
|
||||
this.view.actor.vscroll.adjustment.value = 0;
|
||||
this._openSpaceForPopup();
|
||||
});
|
||||
this.actor.connect('destroy', this.onDestroy.bind(this));
|
||||
this.actor.connect('notify::mapped', () => {
|
||||
if (!this.actor.mapped && this._popup)
|
||||
this._popup.popdown();
|
||||
@ -1151,6 +1152,13 @@ var FolderIcon = class FolderIcon {
|
||||
this._redisplay();
|
||||
}
|
||||
|
||||
onDestroy() {
|
||||
this.view.actor.destroy();
|
||||
|
||||
if (this._popup)
|
||||
this._popup.actor.destroy();
|
||||
}
|
||||
|
||||
getAppIds() {
|
||||
return this.view.getAllItems().map(item => item.id);
|
||||
}
|
||||
@ -1325,7 +1333,6 @@ var AppFolderPopup = class AppFolderPopup {
|
||||
|
||||
global.focus_manager.add_group(this.actor);
|
||||
|
||||
source.actor.connect('destroy', () => this.actor.destroy());
|
||||
this._grabHelper = new GrabHelper.GrabHelper(this.actor, {
|
||||
actionMode: Shell.ActionMode.POPUP
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user