From a98ed08a549bcc2fdc0b9c1b50edd3d83dd3c06d Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Wed, 10 Oct 2018 18:26:31 -0700 Subject: [PATCH] notificationDaemon: use different reason when replacing notification Differently from the fd.o notifications, Gtk notifications do not have a mechanism to update themselves. Instead, when a new notification is received for an ID already known to the notification daemon, the old notification is dismissed and a replaced with a new one. Currently though, there is no way to distinguish a notification that was dismissed because of an user interaction, or because it was replaced. That is an useful piece of information, so add a new value to the NotificationDestroyedReason enum to account for it. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/258 --- js/ui/messageTray.js | 9 ++++++--- js/ui/notificationDaemon.js | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 84681569e..f8e2f0b9f 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -50,12 +50,15 @@ var State = { // These reasons are useful when we destroy the notifications received through // the notification daemon. We use EXPIRED for notifications that we dismiss // and the user did not interact with, DISMISSED for all other notifications -// that were destroyed as a result of a user action, and SOURCE_CLOSED for the -// notifications that were requested to be destroyed by the associated source. +// that were destroyed as a result of a user action, SOURCE_CLOSED for the +// notifications that were requested to be destroyed by the associated source, +// and REPLACED for notifications that were destroyed as a consequence of a +// newer version having replaced them. var NotificationDestroyedReason = { EXPIRED: 1, DISMISSED: 2, - SOURCE_CLOSED: 3 + SOURCE_CLOSED: 3, + REPLACED: 4 }; // Message tray has its custom Urgency enumeration. LOW, NORMAL and CRITICAL diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 4d2be44ed..609e56253 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -690,7 +690,7 @@ var GtkNotificationDaemonAppSource = new Lang.Class({ this._notificationPending = true; if (this._notifications[notificationId]) - this._notifications[notificationId].destroy(); + this._notifications[notificationId].destroy(MessageTray.NotificationDestroyedReason.REPLACED); let notification = this._createNotification(notificationParams); notification.connect('destroy', () => {