[gnome-shell] messageTray: Defer creation of mainIcon



commit 8f129e1c9de9968996fdb466354d0d38cfc17fcc
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu Aug 16 15:50:35 2012 -0400

    messageTray: Defer creation of mainIcon
    
    We need to make sure the Source is fully constructed before creating
    mainIcon, as SourceActor will query the count of the source.
    
    This fixes Telepathy Chats.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=682045

 js/ui/messageTray.js |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index eabf6a7..2a736b6 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -1132,9 +1132,6 @@ const Source = new Lang.Class({
         this.isMuted = false;
 
         this.notifications = [];
-
-        this.mainIcon = new SourceActor(this, this.ICON_SIZE);
-        this._setSummaryIcon(this.createIcon(this.ICON_SIZE));
     },
 
     get count() {
@@ -1178,10 +1175,23 @@ const Source = new Lang.Class({
                              icon_size: size });
     },
 
+    _ensureMainIcon: function(icon) {
+        if (this._mainIcon)
+            return false;
+
+        if (!icon)
+            icon = this.createIcon(this.ICON_SIZE);
+
+        this._mainIcon = new SourceActor(this, this.ICON_SIZE);
+        this._mainIcon.setIcon(icon);
+        return true;
+    },
+
     // Unlike createIcon, this always returns the same actor;
     // there is only one summary icon actor for a Source.
     getSummaryIcon: function() {
-        return this.mainIcon.actor;
+        this._ensureMainIcon();
+        return this._mainIcon.actor;
     },
 
     pushNotification: function(notification) {
@@ -1228,7 +1238,8 @@ const Source = new Lang.Class({
 
     //// Protected methods ////
     _setSummaryIcon: function(icon) {
-        this.mainIcon.setIcon(icon);
+        if (!this._ensureMainIcon(icon))
+            this._mainIcon.setIcon(icon);
     },
 
     open: function(notification) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]