MessageTray: only create icon buttons if specifically requested
Action names sometimes unintentionally overlap with icon names, so we should only create icon buttons if the message tray source requests it. For the notification daemon, this is done by setting the 'action-icons' hint on the notification. The previous notification server capability used to advertise this feature, "x-gnome-icon-buttons", has been removed in favour of the new capability described in the notification spec, "action-icons". https://bugzilla.gnome.org/show_bug.cgi?id=624584
This commit is contained in:
parent
31df386fed
commit
9585c823d5
@ -102,6 +102,7 @@ Notification.prototype = {
|
||||
this.source = source;
|
||||
this.urgent = false;
|
||||
this.expanded = false;
|
||||
this._useActionIcons = false;
|
||||
this._customContent = false;
|
||||
this._bannerBodyText = null;
|
||||
this._titleFitsInBannerMode = true;
|
||||
@ -346,7 +347,7 @@ Notification.prototype = {
|
||||
|
||||
let button = new St.Button();
|
||||
|
||||
if (Gtk.IconTheme.get_default().has_icon(id)) {
|
||||
if (this._useActionIcons && Gtk.IconTheme.get_default().has_icon(id)) {
|
||||
button.add_style_class_name('notification-icon-button');
|
||||
button.child = St.TextureCache.get_default().load_icon_name(id, St.IconType.SYMBOLIC, BUTTON_ICON_SIZE);
|
||||
} else {
|
||||
@ -363,6 +364,10 @@ Notification.prototype = {
|
||||
this.urgent = urgent;
|
||||
},
|
||||
|
||||
setUseActionIcons: function(useIcons) {
|
||||
this._useActionIcons = useIcons;
|
||||
},
|
||||
|
||||
_styleChanged: function() {
|
||||
this._spacing = this.actor.get_theme_node().get_length('spacing-columns');
|
||||
},
|
||||
|
@ -294,6 +294,7 @@ NotificationDaemon.prototype = {
|
||||
}
|
||||
|
||||
if (actions.length) {
|
||||
notification.setUseActionIcons(hints['action-icons'] == true);
|
||||
for (let i = 0; i < actions.length - 1; i += 2)
|
||||
notification.addButton(actions[i], actions[i + 1]);
|
||||
}
|
||||
@ -317,6 +318,7 @@ NotificationDaemon.prototype = {
|
||||
GetCapabilities: function() {
|
||||
return [
|
||||
'actions',
|
||||
'action-icons',
|
||||
'body',
|
||||
// 'body-hyperlinks',
|
||||
// 'body-images',
|
||||
@ -325,7 +327,6 @@ NotificationDaemon.prototype = {
|
||||
'icon-static',
|
||||
'persistence',
|
||||
// 'sound',
|
||||
'x-gnome-icon-buttons'
|
||||
];
|
||||
},
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user