boxpointer: Unset the sourceActor on destruction
A boxpointer sourceActor could be destroyed before the boxpointer itself. In such case, unset the sourceActor reference, connecting to 'destroy' signal. Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1295 https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/576 (cherry picked from commit 2fd120162fe49bc85d7773435ac1412c512c5af4)
This commit is contained in:
parent
24cb1c1aab
commit
95e353fdb4
@ -50,6 +50,15 @@ var BoxPointer = GObject.registerClass({
|
|||||||
this._sourceAlignment = 0.5;
|
this._sourceAlignment = 0.5;
|
||||||
this._capturedEventId = 0;
|
this._capturedEventId = 0;
|
||||||
this._muteInput();
|
this._muteInput();
|
||||||
|
|
||||||
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
_onDestroy() {
|
||||||
|
if (this._sourceActorDestroyId) {
|
||||||
|
this._sourceActor.disconnect(this._sourceActorDestroyId);
|
||||||
|
delete this._sourceActorDestroyId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get arrowSide() {
|
get arrowSide() {
|
||||||
@ -454,9 +463,26 @@ var BoxPointer = GObject.registerClass({
|
|||||||
// so that we can query the correct size.
|
// so that we can query the correct size.
|
||||||
this.show();
|
this.show();
|
||||||
|
|
||||||
|
if (!this._sourceActor || sourceActor != this._sourceActor) {
|
||||||
|
if (this._sourceActorDestroyId) {
|
||||||
|
this._sourceActor.disconnect(this._sourceActorDestroyId);
|
||||||
|
delete this._sourceActorDestroyId;
|
||||||
|
}
|
||||||
|
|
||||||
this._sourceActor = sourceActor;
|
this._sourceActor = sourceActor;
|
||||||
|
|
||||||
|
if (this._sourceActor) {
|
||||||
|
this._sourceActorDestroyId = this._sourceActor.connect('destroy', () => {
|
||||||
|
this._sourceActor = null;
|
||||||
|
delete this._sourceActorDestroyId;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
this._arrowAlignment = alignment;
|
this._arrowAlignment = alignment;
|
||||||
|
|
||||||
|
if (!this._sourceActor)
|
||||||
|
return;
|
||||||
|
|
||||||
this._reposition();
|
this._reposition();
|
||||||
this._updateFlip();
|
this._updateFlip();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user