From 9585c823d51af30a536c7b304cbc12b24259635b Mon Sep 17 00:00:00 2001 From: Jonathan Matthew Date: Sat, 30 Oct 2010 16:29:21 +1000 Subject: [PATCH] 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 --- js/ui/messageTray.js | 7 ++++++- js/ui/notificationDaemon.js | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 7ab1b76d2..d11051943 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -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'); }, diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 88fbc00e0..5bebb170d 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -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' ]; },