MessageTray: actually respect other components acking notifications

If a notification is marked acknowledged from outside, filter it
out from the queue.

https://bugzilla.gnome.org/show_bug.cgi?id=698812
This commit is contained in:
Giovanni Campagna 2013-05-12 19:52:58 +02:00
parent 2591bc90ac
commit ae6d7bbfa3

View File

@ -2196,7 +2196,10 @@ const MessageTray = new Lang.Class({
// at the present time. // at the present time.
_updateState: function() { _updateState: function() {
// Notifications // Notifications
let notificationQueue = this._notificationQueue; let notificationQueue = this._notificationQueue.filter(function(n) {
return !n.acknowledged;
});
this._notificationQueue = notificationQueue;
let notificationUrgent = notificationQueue.length > 0 && notificationQueue[0].urgency == Urgency.CRITICAL; let notificationUrgent = notificationQueue.length > 0 && notificationQueue[0].urgency == Urgency.CRITICAL;
let notificationForFeedback = notificationQueue.length > 0 && notificationQueue[0].forFeedback; let notificationForFeedback = notificationQueue.length > 0 && notificationQueue[0].forFeedback;
let notificationsLimited = this._busy || Main.layoutManager.bottomMonitor.inFullscreen; let notificationsLimited = this._busy || Main.layoutManager.bottomMonitor.inFullscreen;
@ -2637,16 +2640,8 @@ const MessageTray = new Lang.Class({
let hasRightClickMenu = this._summaryBoxPointerItem.rightClickMenu != null; let hasRightClickMenu = this._summaryBoxPointerItem.rightClickMenu != null;
if (this._clickedSummaryItemMouseButton == 1 || !hasRightClickMenu) { if (this._clickedSummaryItemMouseButton == 1 || !hasRightClickMenu) {
let newQueue = []; // Acknowledge all our notifications
for (let i = 0; i < this._notificationQueue.length; i++) { this._summmaryBoxPointerItem.source.notifications.forEach(function(n) { n.acknowledged = true; });
let notification = this._notificationQueue[i];
let sameSource = this._summaryBoxPointerItem.source == notification.source;
if (sameSource)
notification.acknowledged = true;
else
newQueue.push(notification);
}
this._notificationQueue = newQueue;
this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget; this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget;