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.
This commit is contained in:
parent
7637afe7dc
commit
00df20c618
@ -107,6 +107,8 @@ WindowClone.prototype = {
|
|||||||
this._sizeChangedId = this.realWindow.connect('size-changed', Lang.bind(this, function() {
|
this._sizeChangedId = this.realWindow.connect('size-changed', Lang.bind(this, function() {
|
||||||
this.emit('size-changed');
|
this.emit('size-changed');
|
||||||
}));
|
}));
|
||||||
|
this._realWindowDestroyId = this.realWindow.connect('destroy',
|
||||||
|
Lang.bind(this, this._disconnectRealWindowSignals));
|
||||||
|
|
||||||
this.actor.connect('button-release-event',
|
this.actor.connect('button-release-event',
|
||||||
Lang.bind(this, this._onButtonRelease));
|
Lang.bind(this, this._onButtonRelease));
|
||||||
@ -160,10 +162,19 @@ WindowClone.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_disconnectRealWindowSignals: function() {
|
||||||
this.realWindow.disconnect(this._sizeChangedId);
|
if (this._sizeChangedId > 0)
|
||||||
|
this.realWindow.disconnect(this._sizeChangedId);
|
||||||
this._sizeChangedId = 0;
|
this._sizeChangedId = 0;
|
||||||
|
|
||||||
|
if (this._realWindowDestroyId > 0)
|
||||||
|
this.realWindow.disconnect(this._realWindowDestroyId);
|
||||||
|
this._realWindowDestroyId = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
this._disconnectRealWindowSignals();
|
||||||
|
|
||||||
this.metaWindow._delegate = null;
|
this.metaWindow._delegate = null;
|
||||||
this.actor._delegate = null;
|
this.actor._delegate = null;
|
||||||
if (this._zoomLightbox)
|
if (this._zoomLightbox)
|
||||||
|
Loading…
Reference in New Issue
Block a user