notificationDaemon: Stop auto-dismissing on focus changes
This behavior dates back all the way to the original gnome-shell release, and it did make sense at the time: - we were first to make notifications persistent instead of closing them after a timeout; apps were therefore used to treat notifications as fire-and-forget instead of closing them when no longer relevant - neither web notifications not portals did exist yet, so the D-Bus API was only used directly, instead of as a backend for other APIs; as a result, focusing the app was more likely than not to put the source of the event that the user was notified about into view Nowadays both persistent notifications and web notifications are wide-spread, so the original reasons no longer apply. This change helps web notifications in particular, as it reduces the differences between XDG and portal-based implementations. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2332>
This commit is contained in:
parent
9d47062c32
commit
12a203a1db
@ -34,11 +34,6 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
|
|||||||
this._notifications = {};
|
this._notifications = {};
|
||||||
|
|
||||||
this._nextNotificationId = 1;
|
this._nextNotificationId = 1;
|
||||||
|
|
||||||
Shell.WindowTracker.get_default().connect('notify::focus-app',
|
|
||||||
this._onFocusAppChanged.bind(this));
|
|
||||||
Main.overview.connect('hidden',
|
|
||||||
this._onFocusAppChanged.bind(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_imageForNotificationData(hints) {
|
_imageForNotificationData(hints) {
|
||||||
@ -326,20 +321,6 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
_onFocusAppChanged() {
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
|
||||||
if (!tracker.focus_app)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (let i = 0; i < this._sources.length; i++) {
|
|
||||||
let source = this._sources[i];
|
|
||||||
if (source.app == tracker.focus_app) {
|
|
||||||
source.destroyNonResidentNotifications();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_emitNotificationClosed(id, reason) {
|
_emitNotificationClosed(id, reason) {
|
||||||
this._dbusImpl.emit_signal('NotificationClosed',
|
this._dbusImpl.emit_signal('NotificationClosed',
|
||||||
GLib.Variant.new('(uu)', [id, reason]));
|
GLib.Variant.new('(uu)', [id, reason]));
|
||||||
|
Loading…
Reference in New Issue
Block a user