[gnome-panel] menu: use prefer-symbolic-icons setting



commit 1e0aa6f51ea566b79da0b87fb156a7b6758dffc2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Dec 23 14:43:50 2019 +0200

    menu: use prefer-symbolic-icons setting

 modules/menu/gp-menu-bar-applet.c    | 40 +++++++++++++++++++++++++++++-------
 modules/menu/gp-menu-button-applet.c | 23 ++++++++++++++++++++-
 modules/menu/gp-user-menu-applet.c   | 40 +++++++++++++++++++++++++++++-------
 3 files changed, 88 insertions(+), 15 deletions(-)
---
diff --git a/modules/menu/gp-menu-bar-applet.c b/modules/menu/gp-menu-bar-applet.c
index c3f12799d..e3a1c74f7 100644
--- a/modules/menu/gp-menu-bar-applet.c
+++ b/modules/menu/gp-menu-bar-applet.c
@@ -20,6 +20,7 @@
 #include <glib/gi18n-lib.h>
 #include <libgnome-panel/gp-action.h>
 #include <libgnome-panel/gp-image-menu-item.h>
+#include <libgnome-panel/gp-utils.h>
 
 #include "gp-menu-bar-applet.h"
 #include "gp-menu-bar.h"
@@ -91,31 +92,56 @@ get_settings_menu (void)
 }
 
 static void
-panel_icon_size_cb (GpApplet   *applet,
-                    GParamSpec *pspec,
-                    GtkWidget  *icon)
+update_icon (GpApplet  *applet,
+             GtkWidget *icon)
 {
+  const char *icon_name;
   guint icon_size;
 
+  icon_name = "start-here";
+  if (gp_applet_get_prefer_symbolic_icons (applet))
+    icon_name = "start-here-symbolic";
+
   icon_size = gp_applet_get_panel_icon_size (applet);
+
+  gtk_image_set_from_icon_name (GTK_IMAGE (icon), icon_name, GTK_ICON_SIZE_MENU);
   gtk_image_set_pixel_size (GTK_IMAGE (icon), icon_size);
 }
 
+static void
+prefer_symbolic_icons_cb (GpApplet   *applet,
+                          GParamSpec *pspec,
+                          GtkWidget  *icon)
+{
+  update_icon (applet, icon);
+}
+
+static void
+panel_icon_size_cb (GpApplet   *applet,
+                    GParamSpec *pspec,
+                    GtkWidget  *icon)
+{
+  update_icon (applet, icon);
+}
+
 static void
 append_applications_item (GpMenuBarApplet *applet)
 {
-  guint icon_size;
   GtkWidget *icon;
   const gchar *tooltip;
   gchar *menu;
 
-  icon_size = gp_applet_get_panel_icon_size (GP_APPLET (applet));
-  icon = gtk_image_new_from_icon_name ("start-here", GTK_ICON_SIZE_MENU);
-  gtk_image_set_pixel_size (GTK_IMAGE (icon), icon_size);
+  icon = gtk_image_new ();
+  gp_add_text_color_class (icon);
+
+  g_signal_connect (applet, "notify::prefer-symbolic-icons",
+                    G_CALLBACK (prefer_symbolic_icons_cb), icon);
 
   g_signal_connect (applet, "notify::panel-icon-size",
                     G_CALLBACK (panel_icon_size_cb), icon);
 
+  update_icon (GP_APPLET (applet), icon);
+
   applet->applications_item = gp_image_menu_item_new_with_label (_("Applications"));
   gtk_menu_shell_append (GTK_MENU_SHELL (applet->menu_bar), applet->applications_item);
   gp_image_menu_item_set_image (GP_IMAGE_MENU_ITEM (applet->applications_item), icon);
diff --git a/modules/menu/gp-menu-button-applet.c b/modules/menu/gp-menu-button-applet.c
index 0f42b2922..c7e141446 100644
--- a/modules/menu/gp-menu-button-applet.c
+++ b/modules/menu/gp-menu-button-applet.c
@@ -25,6 +25,7 @@
 
 #include <glib/gi18n-lib.h>
 #include <libgnome-panel/gp-image-menu-item.h>
+#include <libgnome-panel/gp-utils.h>
 
 #include "gp-lock-logout.h"
 #include "gp-menu-button.h"
@@ -118,7 +119,15 @@ update_icon (GpMenuButtonApplet *menu_button)
     icon = gp_menu_get_icon (GP_MENU (priv->menu));
 
   if (icon == NULL)
-    icon = g_themed_icon_new ("start-here");
+    {
+      const char *icon_name;
+
+      icon_name = "start-here";
+      if (gp_applet_get_prefer_symbolic_icons (GP_APPLET (menu_button)))
+        icon_name = "start-here-symbolic";
+
+      icon = g_themed_icon_new (icon_name);
+    }
 
   gtk_image_set_from_gicon (GTK_IMAGE (priv->image), icon, GTK_ICON_SIZE_MENU);
 
@@ -431,6 +440,14 @@ arrow_size_from_icon_size (guint icon_size)
   return 16 * (icon_size / 36.0);
 }
 
+static void
+prefer_symbolic_icons_cb (GpApplet           *applet,
+                          GParamSpec         *pspec,
+                          GpMenuButtonApplet *menu_button)
+{
+  update_icon (menu_button);
+}
+
 static void
 panel_icon_size_cb (GpApplet           *applet,
                     GParamSpec         *pspec,
@@ -559,6 +576,7 @@ setup_button (GpMenuButtonApplet *menu_button)
   gtk_widget_show (overlay);
 
   priv->image = gtk_image_new ();
+  gp_add_text_color_class (priv->image);
   gtk_container_add (GTK_CONTAINER (overlay), priv->image);
   gtk_widget_show (priv->image);
 
@@ -606,6 +624,9 @@ gp_menu_button_applet_setup (GpMenuButtonApplet *menu_button)
   g_signal_connect (priv->settings, "changed",
                     G_CALLBACK (settings_changed_cb), menu_button);
 
+  g_signal_connect (menu_button, "notify::prefer-symbolic-icons",
+                    G_CALLBACK (prefer_symbolic_icons_cb), menu_button);
+
   g_signal_connect (menu_button, "notify::panel-icon-size",
                     G_CALLBACK (panel_icon_size_cb), menu_button);
 
diff --git a/modules/menu/gp-user-menu-applet.c b/modules/menu/gp-user-menu-applet.c
index 4e69fa430..b396955a0 100644
--- a/modules/menu/gp-user-menu-applet.c
+++ b/modules/menu/gp-user-menu-applet.c
@@ -23,6 +23,7 @@
 #include "gp-user-menu.h"
 
 #include <libgnome-panel/gp-image-menu-item.h>
+#include <libgnome-panel/gp-utils.h>
 
 struct _GpUserMenuApplet
 {
@@ -51,32 +52,57 @@ button_press_event_cb (GtkWidget      *widget,
 }
 
 static void
-panel_icon_size_cb (GpApplet   *applet,
-                    GParamSpec *pspec,
-                    GtkWidget  *icon)
+update_icon (GpApplet  *applet,
+             GtkWidget *icon)
 {
+  const char *icon_name;
   guint icon_size;
 
+  icon_name = "computer";
+  if (gp_applet_get_prefer_symbolic_icons (applet))
+    icon_name = "computer-symbolic";
+
   icon_size = gp_applet_get_panel_icon_size (applet);
+
+  gtk_image_set_from_icon_name (GTK_IMAGE (icon), icon_name, GTK_ICON_SIZE_MENU);
   gtk_image_set_pixel_size (GTK_IMAGE (icon), icon_size);
 }
 
+static void
+prefer_symbolic_icons_cb (GpApplet   *applet,
+                          GParamSpec *pspec,
+                          GtkWidget  *icon)
+{
+  update_icon (applet, icon);
+}
+
+static void
+panel_icon_size_cb (GpApplet   *applet,
+                    GParamSpec *pspec,
+                    GtkWidget  *icon)
+{
+  update_icon (applet, icon);
+}
+
 static void
 append_user_item (GpUserMenuApplet *applet)
 {
-  guint icon_size;
   GtkWidget *icon;
   gchar *user_name;
   GtkWidget *item;
   GtkWidget *menu;
 
-  icon_size = gp_applet_get_panel_icon_size (GP_APPLET (applet));
-  icon = gtk_image_new_from_icon_name ("computer", GTK_ICON_SIZE_MENU);
-  gtk_image_set_pixel_size (GTK_IMAGE (icon), icon_size);
+  icon = gtk_image_new ();
+  gp_add_text_color_class (icon);
+
+  g_signal_connect (applet, "notify::prefer-symbolic-icons",
+                    G_CALLBACK (prefer_symbolic_icons_cb), icon);
 
   g_signal_connect (applet, "notify::panel-icon-size",
                     G_CALLBACK (panel_icon_size_cb), icon);
 
+  update_icon (GP_APPLET (applet), icon);
+
   user_name = gp_menu_utils_get_user_name ();
   item = gp_image_menu_item_new_with_label (user_name);
   g_free (user_name);


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