From 4d43424efdb168face0bb9afe8e0527f09637efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 21 Feb 2010 06:25:23 +0100 Subject: [PATCH] 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(+) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 2907f920d..fe7a08166 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 7f5dfcf7e..89710d62b 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();