From 00df20c6184b6ebf912151607c7503f9bf60326e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 3 Feb 2011 19:25:59 +0100 Subject: [PATCH] window-clone: Fix signal connections when the window is closed Commit 91d8a32f25 let WindowClone forward the size-changed signal of the "real" window, disconnecting the signal handler when the clone is destroyed. In case the clone was destroyed due to the MetaWindowActor being closed, this results in a warning (gsignal.c:2392: instance `0x2a3fac0' has no handler with id `2955'). Handle the case where the original window is destroyed before its clone. --- js/ui/workspace.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/js/ui/workspace.js b/js/ui/workspace.js index cf3feb5c9..ebb3f1e9f 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -107,6 +107,8 @@ WindowClone.prototype = { this._sizeChangedId = this.realWindow.connect('size-changed', Lang.bind(this, function() { this.emit('size-changed'); })); + this._realWindowDestroyId = this.realWindow.connect('destroy', + Lang.bind(this, this._disconnectRealWindowSignals)); this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease)); @@ -160,10 +162,19 @@ WindowClone.prototype = { } }, - _onDestroy: function() { - this.realWindow.disconnect(this._sizeChangedId); + _disconnectRealWindowSignals: function() { + if (this._sizeChangedId > 0) + this.realWindow.disconnect(this._sizeChangedId); this._sizeChangedId = 0; + if (this._realWindowDestroyId > 0) + this.realWindow.disconnect(this._realWindowDestroyId); + this._realWindowDestroyId = 0; + }, + + _onDestroy: function() { + this._disconnectRealWindowSignals(); + this.metaWindow._delegate = null; this.actor._delegate = null; if (this._zoomLightbox)