Use _onDestroy() handlers for cleanup in delegates
Unify the style of <delegate>.destroy() methods to only contain a call to <delegate>.actor.destroy() and handle additional cleanup in a _onDestroy() signal handler. https://bugzilla.gnome.org/show_bug.cgi?id=609454
This commit is contained in:
parent
0770fd5be5
commit
9f43ed3f95
@ -47,7 +47,7 @@ Lightbox.prototype = {
|
|||||||
container.add_actor(this.actor);
|
container.add_actor(this.actor);
|
||||||
this.actor.raise_top();
|
this.actor.raise_top();
|
||||||
|
|
||||||
this._destroySignalId = this.actor.connect('destroy', Lang.bind(this, this.destroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
if (width && height) {
|
if (width && height) {
|
||||||
this.actor.width = width;
|
this.actor.width = width;
|
||||||
@ -135,18 +135,24 @@ Lightbox.prototype = {
|
|||||||
/**
|
/**
|
||||||
* destroy:
|
* destroy:
|
||||||
*
|
*
|
||||||
* Destroys the lightbox. This is called automatically if the
|
* Destroys the lightbox.
|
||||||
* lightbox's container is destroyed.
|
|
||||||
*/
|
*/
|
||||||
destroy : function() {
|
destroy : function() {
|
||||||
|
this.actor.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* _onDestroy:
|
||||||
|
*
|
||||||
|
* This is called when the lightbox' actor is destroyed, either
|
||||||
|
* by destroying its container or by explicitly calling this.destroy().
|
||||||
|
*/
|
||||||
|
_onDestroy: function() {
|
||||||
if (this._allocationChangedSignalId != 0)
|
if (this._allocationChangedSignalId != 0)
|
||||||
this._container.disconnect(this._allocationChangedSignalId);
|
this._container.disconnect(this._allocationChangedSignalId);
|
||||||
this._container.disconnect(this._actorAddedSignalId);
|
this._container.disconnect(this._actorAddedSignalId);
|
||||||
this._container.disconnect(this._actorRemovedSignalId);
|
this._container.disconnect(this._actorRemovedSignalId);
|
||||||
|
|
||||||
this.actor.disconnect(this._destroySignalId);
|
|
||||||
|
|
||||||
this.highlight(null);
|
this.highlight(null);
|
||||||
this.actor.destroy();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -581,6 +581,9 @@ Workspace.prototype = {
|
|||||||
|
|
||||||
this.actor = new Clutter.Group();
|
this.actor = new Clutter.Group();
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
|
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
// Auto-sizing is unreliable in the presence of ClutterClone, so rather than
|
// Auto-sizing is unreliable in the presence of ClutterClone, so rather than
|
||||||
// implicitly counting on the workspace actor to be sized to the size of the
|
// implicitly counting on the workspace actor to be sized to the size of the
|
||||||
// included desktop actor clone, set the size explicitly to the screen size.
|
// included desktop actor clone, set the size explicitly to the screen size.
|
||||||
@ -1330,10 +1333,11 @@ Workspace.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
destroy : function() {
|
destroy : function() {
|
||||||
Tweener.removeTweens(this.actor);
|
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
this.actor = null;
|
},
|
||||||
this._windowOverlaysGroup.destroy();
|
|
||||||
|
_onDestroy: function(actor) {
|
||||||
|
Tweener.removeTweens(actor);
|
||||||
|
|
||||||
this._metaWorkspace.disconnect(this._windowAddedId);
|
this._metaWorkspace.disconnect(this._windowAddedId);
|
||||||
this._metaWorkspace.disconnect(this._windowRemovedId);
|
this._metaWorkspace.disconnect(this._windowRemovedId);
|
||||||
|
@ -39,6 +39,8 @@ GenericWorkspacesView.prototype = {
|
|||||||
this.actor = new St.Bin({ style_class: "workspaces" });
|
this.actor = new St.Bin({ style_class: "workspaces" });
|
||||||
this._actor = new Clutter.Group();
|
this._actor = new Clutter.Group();
|
||||||
|
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
this.actor.add_actor(this._actor);
|
this.actor.add_actor(this._actor);
|
||||||
this.actor.connect('style-changed', Lang.bind(this,
|
this.actor.connect('style-changed', Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
@ -181,13 +183,14 @@ GenericWorkspacesView.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
|
this.actor.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
for (let w = 0; w < this._workspaces.length; w++)
|
for (let w = 0; w < this._workspaces.length; w++)
|
||||||
this._workspaces[w].destroy();
|
this._workspaces[w].destroy();
|
||||||
this._workspaces = [];
|
this._workspaces = [];
|
||||||
|
|
||||||
this.actor.destroy();
|
|
||||||
this.actor = null;
|
|
||||||
|
|
||||||
Main.overview.disconnect(this._overviewShowingId);
|
Main.overview.disconnect(this._overviewShowingId);
|
||||||
global.screen.disconnect(this._nWorkspacesNotifyId);
|
global.screen.disconnect(this._nWorkspacesNotifyId);
|
||||||
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
||||||
|
Loading…
Reference in New Issue
Block a user