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
This commit is contained in:
Florian Müllner 2010-02-21 06:25:23 +01:00
parent 1f1f4432f6
commit 4d43424efd
2 changed files with 13 additions and 0 deletions

View File

@ -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) { removeNotification: function(notification) {
if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) { if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
if (this._notificationTimeoutId) { if (this._notificationTimeoutId) {

View File

@ -100,6 +100,9 @@ NotificationDaemon.prototype = {
Lang.bind(this, this._lostName)); Lang.bind(this, this._lostName));
this._currentNotifications = {}; this._currentNotifications = {};
Shell.WindowTracker.get_default().connect('notify::focus-app',
Lang.bind(this, this._onFocusAppChanged));
}, },
_acquiredName: function() { _acquiredName: function() {
@ -260,6 +263,10 @@ NotificationDaemon.prototype = {
]; ];
}, },
_onFocusAppChanged: function(tracker) {
Main.messageTray.removeSourceByApp(tracker.focus_app);
},
_actionInvoked: function(notification, action, source, id) { _actionInvoked: function(notification, action, source, id) {
this._emitActionInvoked(id, action); this._emitActionInvoked(id, action);
source.destroy(); source.destroy();