[gnome-shell] LayoutManager: untrack actors that are destroyed
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] LayoutManager: untrack actors that are destroyed
- Date: Sun, 9 Feb 2014 18:29:52 +0000 (UTC)
commit 477f28a6bd3e44c070eb470ed1d6800ea073a292
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sat Feb 8 21:44:58 2014 +0100
LayoutManager: untrack actors that are destroyed
If an actor is destroyed, calling get_transformed_size()/position()
can return bogus values and trigger JS exceptions.
This can happen if a tracked actor comes from an extension
(such as classic mode's window-list) and that extension is
deactivated.
https://bugzilla.gnome.org/show_bug.cgi?id=723661
js/ui/layout.js | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 0609ff2..6f7bceb 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -834,6 +834,8 @@ const LayoutManager = new Lang.Class({
Lang.bind(this, this._queueUpdateRegions));
actorData.allocationId = actor.connect('notify::allocation',
Lang.bind(this, this._queueUpdateRegions));
+ actorData.destroyId = actor.connect('destroy',
+ Lang.bind(this, this._untrackActor));
// Note that destroying actor will unset its parent, so we don't
// need to connect to 'destroy' too.
@@ -852,6 +854,7 @@ const LayoutManager = new Lang.Class({
actor.disconnect(actorData.visibleId);
actor.disconnect(actorData.allocationId);
actor.disconnect(actorData.parentSetId);
+ actor.disconnect(actorData.destroyId);
this._queueUpdateRegions();
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]