appDisplay: Disconnect Main item-drag signals on icons destruction
Icons connect to overview's item-drag events to react to start/end drags, however the icons should disconnect from signals once destroyed. So, disconnect from Main events once the actors have been destroyed. Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1511 https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/677
This commit is contained in:
parent
ada01507a4
commit
35dbc3fcc9
@ -1433,10 +1433,10 @@ var FolderIcon = class FolderIcon {
|
|||||||
|
|
||||||
this.view = new FolderView(this._folder, id, parentView);
|
this.view = new FolderView(this._folder, id, parentView);
|
||||||
|
|
||||||
Main.overview.connect('item-drag-begin',
|
this._itemDragBeginId = Main.overview.connect(
|
||||||
this._onDragBegin.bind(this));
|
'item-drag-begin', this._onDragBegin.bind(this));
|
||||||
Main.overview.connect('item-drag-end',
|
this._itemDragEndId = Main.overview.connect(
|
||||||
this._onDragEnd.bind(this));
|
'item-drag-end', this._onDragEnd.bind(this));
|
||||||
|
|
||||||
this.actor.connect('clicked', this.open.bind(this));
|
this.actor.connect('clicked', this.open.bind(this));
|
||||||
this.actor.connect('destroy', this.onDestroy.bind(this));
|
this.actor.connect('destroy', this.onDestroy.bind(this));
|
||||||
@ -1450,6 +1450,9 @@ var FolderIcon = class FolderIcon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onDestroy() {
|
onDestroy() {
|
||||||
|
Main.overview.disconnect(this._itemDragBeginId);
|
||||||
|
Main.overview.disconnect(this._itemDragEndId);
|
||||||
|
|
||||||
this.view.actor.destroy();
|
this.view.actor.destroy();
|
||||||
|
|
||||||
if (this._spaceReadySignalId) {
|
if (this._spaceReadySignalId) {
|
||||||
@ -1870,8 +1873,10 @@ var AppIcon = class AppIcon {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this));
|
this._itemDragBeginId = Main.overview.connect(
|
||||||
Main.overview.connect('item-drag-end', this._onDragEnd.bind(this));
|
'item-drag-begin', this._onDragBegin.bind(this));
|
||||||
|
this._itemDragEndId = Main.overview.connect(
|
||||||
|
'item-drag-end', this._onDragEnd.bind(this));
|
||||||
|
|
||||||
this.actor.connect('destroy', this._onDestroy.bind(this));
|
this.actor.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
@ -1883,6 +1888,9 @@ var AppIcon = class AppIcon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
|
Main.overview.disconnect(this._itemDragBeginId);
|
||||||
|
Main.overview.disconnect(this._itemDragEndId);
|
||||||
|
|
||||||
if (this._folderPreviewId > 0) {
|
if (this._folderPreviewId > 0) {
|
||||||
GLib.source_remove(this._folderPreviewId);
|
GLib.source_remove(this._folderPreviewId);
|
||||||
this._folderPreviewId = 0;
|
this._folderPreviewId = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user