userWidget: Fix leaking instances

UserWidget instances should be destroyed when the actor is. That's
what consumer code expects since the destroy() method is never called.

https://bugzilla.gnome.org/show_bug.cgi?id=700807
This commit is contained in:
Rui Matos 2013-05-21 21:33:04 +02:00
parent db2e6e5b95
commit 3754a76f10

View File

@ -16,6 +16,7 @@ const UserWidget = new Lang.Class({
this.actor = new St.BoxLayout({ style_class: 'user-widget', this.actor = new St.BoxLayout({ style_class: 'user-widget',
vertical: false }); vertical: false });
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._avatar = new UserMenu.UserAvatarWidget(user); this._avatar = new UserMenu.UserAvatarWidget(user);
this.actor.add(this._avatar.actor, this.actor.add(this._avatar.actor,
@ -36,7 +37,7 @@ const UserWidget = new Lang.Class({
this._updateUser(); this._updateUser();
}, },
destroy: function() { _onDestroy: function() {
if (this._userLoadedId != 0) { if (this._userLoadedId != 0) {
this._user.disconnect(this._userLoadedId); this._user.disconnect(this._userLoadedId);
this._userLoadedId = 0; this._userLoadedId = 0;
@ -46,8 +47,6 @@ const UserWidget = new Lang.Class({
this._user.disconnect(this._userChangedId); this._user.disconnect(this._userChangedId);
this._userChangedId = 0; this._userChangedId = 0;
} }
this.actor.destroy();
}, },
_updateUser: function() { _updateUser: function() {