notificationDaemon: Fix icon-choosing logic

'image-data' (or 'image-path') should take precedence over 'app-icon',
even when both are sent by the application (e.g. Google Chrome).

Fixes #3616.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1616>
This commit is contained in:
Guilherme Silva 2021-01-31 01:11:18 -03:00 committed by Marge Bot
parent 6ae49092c1
commit 779e66ae88

View File

@ -240,19 +240,13 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
}); });
} }
let gicon = this._iconForNotificationData(icon); // 'image-data' (or 'image-path') takes precedence over 'app-icon'.
let gimage = this._imageForNotificationData(hints); let gicon = this._imageForNotificationData(hints);
// If an icon is not specified, we use 'image-data' or 'image-path' hint for an icon if (!gicon)
// and don't show a large image. There are currently many applications that use gicon = this._iconForNotificationData(icon);
// notify_notification_set_icon_from_pixbuf() from libnotify, which in turn sets
// the 'image-data' hint. These applications don't typically pass in 'app_icon' if (!gicon)
// argument to Notify() and actually expect the pixbuf to be shown as an icon.
// So the logic here does the right thing for this case. If both an icon and either
// one of 'image-data' or 'image-path' are specified, the icon and takes precedence.
if (!gicon && gimage)
gicon = gimage;
else if (!gicon)
gicon = this._fallbackIconForNotificationData(hints); gicon = this._fallbackIconForNotificationData(hints);
notification.update(summary, body, { gicon, notification.update(summary, body, { gicon,