appDisplay: Disconnect folder "changed" signal when actors are destroyed

We should disconnect the folders "changed" signal from the folder in
case the FolderView or FolderIcon is destroyed. While at it, also remove
the unused this._spaceReadySignalId of FolderIcon.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
This commit is contained in:
Jonas Dreßler 2020-02-17 15:40:55 +01:00 committed by Florian Müllner
parent 69f6c43b60
commit 989c0ee49e

View File

@ -1324,10 +1324,20 @@ class FolderView extends BaseAppView {
action.connect('pan', this._onPan.bind(this));
this._scrollView.add_action(action);
this._folder.connect('changed', this._redisplay.bind(this));
this.connect('destroy', this._onDestroy.bind(this));
this._folderChangedId = this._folder.connect(
'changed', this._redisplay.bind(this));
this._redisplay();
}
_onDestroy() {
if (this._folderChangedId) {
this._folder.disconnect(this._folderChangedId);
delete this._folderChangedId;
}
}
_childFocused(actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
}
@ -1515,7 +1525,8 @@ var FolderIcon = GObject.registerClass({
this.connect('destroy', this._onDestroy.bind(this));
this._folder.connect('changed', this._sync.bind(this));
this._folderChangedId = this._folder.connect(
'changed', this._sync.bind(this));
this._sync();
}
@ -1525,9 +1536,9 @@ var FolderIcon = GObject.registerClass({
this.view.destroy();
if (this._spaceReadySignalId) {
this._parentView.disconnect(this._spaceReadySignalId);
this._spaceReadySignalId = 0;
if (this._folderChangedId) {
this._folder.disconnect(this._folderChangedId);
delete this._folderChangedId;
}
if (this._dialog)