diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index af490e94a..8c1ba81a6 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -524,6 +524,22 @@ var WorkspacesDisplay = class { this._keyPressEventId = 0; this._fullGeometry = null; + + this.actor.connect('destroy', this._onDestroy.bind(this)); + } + + _onDestroy() { + if (this._notifyOpacityId) { + let parent = this.actor.get_parent(); + if (parent) + parent.disconnect(this._notifyOpacityId); + this._notifyOpacityId = 0; + } + + if (this._parentSetLater) { + Meta.later_remove(this._parentSetLater); + this._parentSetLater = 0; + } } _onPan(action) { @@ -717,7 +733,11 @@ var WorkspacesDisplay = class { oldParent.disconnect(this._notifyOpacityId); this._notifyOpacityId = 0; - Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { + if (this._parentSetLater) + return; + + this._parentSetLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { + this._parentSetLater = 0; let newParent = this.actor.get_parent(); if (!newParent) return;