shellInfo: Don't destroy source on undo

Destroying the source from an action callback will result in the
notification being destroyed twice:

 - source.destroy() destroys all its notifications

 - a notification destroys itself after an action
   was activated

This results in unwanted log spam when attempting to dispose the
notification for a second time.

There is actually no good reason for destroying the source explicitly,
as sources already self-destruct with their last notification.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4457

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1908>
This commit is contained in:
Florian Müllner 2021-07-08 19:23:38 +02:00 committed by Marge Bot
parent 1f4eea12a5
commit 6995c2fa9f

View File

@ -25,16 +25,6 @@ var OVERVIEW_ACTIVATION_TIMEOUT = 0.5;
var ShellInfo = class {
constructor() {
this._source = null;
this._undoCallback = null;
}
_onUndoClicked() {
if (this._undoCallback)
this._undoCallback();
this._undoCallback = null;
if (this._source)
this._source.destroy();
}
setMessage(text, options) {
@ -64,9 +54,8 @@ var ShellInfo = class {
notification.update(text, null, { clear: true });
}
this._undoCallback = undoCallback;
if (undoCallback)
notification.addAction(_("Undo"), this._onUndoClicked.bind(this));
notification.addAction(_('Undo'), () => undoCallback());
this._source.showNotification(notification);
}