[gnome-shell] MessageTray: only create icon buttons if specifically requested



commit 9585c823d51af30a536c7b304cbc12b24259635b
Author: Jonathan Matthew <jonathan d14n org>
Date:   Sat Oct 30 16:29:21 2010 +1000

    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 7ab1b76..d110519 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 88fbc00..5bebb17 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'
         ];
     },
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]