calendar: do not call destroy() recursively

We have a callback that will call close() when the notification is
destroyed, and a callback that will call destroy() on the notification
when the message is closed.

Currently, if the notification is destroyed we'll execute our callback
that will call again destroy() on the notification. That's bad
practice in general, and it also has the side effect of resetting the
destroy reason.

This commit avoids re-destroying the notification by dropping the
notification reference on destroy.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/258
This commit is contained in:
Cosimo Cecchi 2018-10-10 19:08:38 -07:00 committed by Florian Müllner
parent a98ed08a54
commit 5fb8d4f730

View File

@ -773,9 +773,11 @@ var NotificationMessage = new Lang.Class({
this.connect('close', () => {
this._closed = true;
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
if (this.notification)
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
});
this._destroyId = notification.connect('destroy', () => {
this.notification = null;
if (!this._closed)
this.close();
});