notificationDaemon: Keep source alive when replacing notification
When a GNotification has the same ID as a previous one, it should be shown as a new notification after withdrawing the old one. However for this to work, we must not destroy the corresponding source if withdrawing the old notification lets the notification count drop to zero, so make sure the source is kept alive until the replace operation has completed. https://bugzilla.gnome.org/show_bug.cgi?id=775149
This commit is contained in:
parent
75d797a0ac
commit
accd24e379
@ -690,6 +690,7 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
throw new InvalidAppError();
|
||||
|
||||
this._notifications = {};
|
||||
this._notificationPending = false;
|
||||
|
||||
this.parent(this._app.get_name());
|
||||
},
|
||||
@ -729,6 +730,8 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
},
|
||||
|
||||
addNotification: function(notificationId, notificationParams, showBanner) {
|
||||
this._notificationPending = true;
|
||||
|
||||
if (this._notifications[notificationId])
|
||||
this._notifications[notificationId].destroy();
|
||||
|
||||
@ -742,6 +745,14 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
|
||||
this.notify(notification);
|
||||
else
|
||||
this.pushNotification(notification);
|
||||
|
||||
this._notificationPending = false;
|
||||
},
|
||||
|
||||
destroy: function(reason) {
|
||||
if (this._notificationPending)
|
||||
return;
|
||||
this.parent(reason);
|
||||
},
|
||||
|
||||
removeNotification: function(notificationId) {
|
||||
|
Loading…
Reference in New Issue
Block a user