[gnome-shell] Remove source icon when a corresponding window is activated



commit 4d43424efdb168face0bb9afe8e0527f09637efb
Author: Florian Müllner <fmuellner src gnome org>
Date:   Sun Feb 21 06:25:23 2010 +0100

    Remove source icon when a corresponding window is activated
    
    Source icons are no longer needed to inform the user about events
    having occured in a particular application when (s)he activates the
    window - treat that case just as if the user had clicked the source
    icon.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=610494

 js/ui/messageTray.js        |    6 ++++++
 js/ui/notificationDaemon.js |    7 +++++++
 2 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 2907f92..fe7a081 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -489,6 +489,12 @@ MessageTray.prototype = {
         }
     },
 
+    removeSourceByApp: function(app) {
+        for (let source in this._sources)
+            if (this._sources[source].app == app)
+                this.removeSource(this._sources[source]);
+    },
+
     removeNotification: function(notification) {
         if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
             if (this._notificationTimeoutId) {
diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js
index 7f5dfcf..89710d6 100644
--- a/js/ui/notificationDaemon.js
+++ b/js/ui/notificationDaemon.js
@@ -100,6 +100,9 @@ NotificationDaemon.prototype = {
                                   Lang.bind(this, this._lostName));
 
         this._currentNotifications = {};
+
+        Shell.WindowTracker.get_default().connect('notify::focus-app',
+            Lang.bind(this, this._onFocusAppChanged));
     },
 
     _acquiredName: function() {
@@ -260,6 +263,10 @@ NotificationDaemon.prototype = {
         ];
     },
 
+    _onFocusAppChanged: function(tracker) {
+        Main.messageTray.removeSourceByApp(tracker.focus_app);
+    },
+
     _actionInvoked: function(notification, action, source, id) {
         this._emitActionInvoked(id, action);
         source.destroy();



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