[Xfce4-commits] [panel-plugins/xfce4-xkb-plugin] 05/17: Allow to hide tooltip icon

noreply at xfce.org noreply at xfce.org
Sat Jun 10 14:31:38 CEST 2017


This is an automated email from the git hooks/post-receive script.

n   i   n   e   t   l   s       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository panel-plugins/xfce4-xkb-plugin.

commit 0d77ca975a04077fd2cb30dee090ed258d3f657a
Author: Viktor Odintsev <zakhams at gmail.com>
Date:   Thu Mar 16 04:16:03 2017 +0300

    Allow to hide tooltip icon
---
 panel-plugin/xkb-callbacks.c       | 17 +++++++++++++----
 panel-plugin/xkb-properties.h      |  1 +
 panel-plugin/xkb-settings-dialog.c | 14 ++++++++++++++
 panel-plugin/xkb-xfconf.c          | 35 ++++++++++++++++++++++++++++++++++-
 panel-plugin/xkb-xfconf.h          |  1 +
 5 files changed, 63 insertions(+), 5 deletions(-)

diff --git a/panel-plugin/xkb-callbacks.c b/panel-plugin/xkb-callbacks.c
index de8902d..13107de 100644
--- a/panel-plugin/xkb-callbacks.c
+++ b/panel-plugin/xkb-callbacks.c
@@ -185,11 +185,20 @@ xkb_plugin_set_tooltip (GtkWidget *widget,
                         GtkTooltip *tooltip,
                         t_xkb *xkb)
 {
-    gint       group       = xkb_config_get_current_group ();
-    GdkPixbuf *pixbuf      = xkb_config_get_tooltip_pixbuf (group);
-    gchar     *layout_name = xkb_config_get_pretty_layout_name (group);
+    gint group;
+    gchar *layout_name;
+    GdkPixbuf *pixbuf;
+
+    group = xkb_config_get_current_group ();
+
+    if (xkb_xfconf_get_display_tooltip_icon (xkb->config))
+    {
+        pixbuf = xkb_config_get_tooltip_pixbuf (group);
+        gtk_tooltip_set_icon (tooltip, pixbuf);
+    }
+
+    layout_name = xkb_config_get_pretty_layout_name (group);
 
-    gtk_tooltip_set_icon (tooltip, pixbuf);
     gtk_tooltip_set_text (tooltip, layout_name);
 
     return TRUE;
diff --git a/panel-plugin/xkb-properties.h b/panel-plugin/xkb-properties.h
index 960fc6e..62450cb 100644
--- a/panel-plugin/xkb-properties.h
+++ b/panel-plugin/xkb-properties.h
@@ -28,6 +28,7 @@
 
 #define DISPLAY_TYPE "display-type"
 #define DISPLAY_SCALE "display-scale"
+#define DISPLAY_TOOLTIP_ICON "display-tooltip-icon"
 #define GROUP_POLICY "group-policy"
 
 typedef enum
diff --git a/panel-plugin/xkb-settings-dialog.c b/panel-plugin/xkb-settings-dialog.c
index 1b19810..04429d4 100644
--- a/panel-plugin/xkb-settings-dialog.c
+++ b/panel-plugin/xkb-settings-dialog.c
@@ -95,6 +95,7 @@ xfce_xkb_configure (XfcePanelPlugin *plugin,
 {
     GtkWidget *display_type_combo;
     GtkWidget *display_scale_range;
+    GtkWidget *display_tooltip_icon_switch;
     GtkWidget *group_policy_combo;
     GtkWidget *vbox, *frame, *bin, *grid, *label;
     DialogInstance *instance;
@@ -151,6 +152,15 @@ xfce_xkb_configure (XfcePanelPlugin *plugin,
     gtk_widget_set_size_request (display_scale_range, 230, -1);
     gtk_grid_attach (GTK_GRID (grid), display_scale_range, 1, 1, 1, 1);
 
+    label = gtk_label_new (_("Tooltip icon:"));
+    gtk_label_set_xalign (GTK_LABEL (label), 0.f);
+    gtk_widget_set_hexpand (label, TRUE);
+    gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 1, 1);
+
+    display_tooltip_icon_switch = gtk_switch_new ();
+    gtk_widget_set_halign (display_tooltip_icon_switch, GTK_ALIGN_END);
+    gtk_grid_attach (GTK_GRID (grid), display_tooltip_icon_switch, 1, 2, 1, 1);
+
     frame = xfce_gtk_frame_box_new (_("Behavior"), &bin);
     gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 2);
 
@@ -191,6 +201,10 @@ xfce_xkb_configure (XfcePanelPlugin *plugin,
             G_OBJECT (gtk_range_get_adjustment (GTK_RANGE (display_scale_range))),
             "value", G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
 
+    g_object_bind_property (G_OBJECT (xkb->config), DISPLAY_TOOLTIP_ICON,
+            G_OBJECT (display_tooltip_icon_switch),
+            "active", G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
+
     g_object_bind_property (G_OBJECT (xkb->config), GROUP_POLICY,
             G_OBJECT (group_policy_combo),
             "active", G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
diff --git a/panel-plugin/xkb-xfconf.c b/panel-plugin/xkb-xfconf.c
index 9ade5fd..7287c90 100644
--- a/panel-plugin/xkb-xfconf.c
+++ b/panel-plugin/xkb-xfconf.c
@@ -36,6 +36,7 @@
 
 #define DEFAULT_DISPLAY_TYPE                DISPLAY_TYPE_IMAGE
 #define DEFAULT_DISPLAY_SCALE               DISPLAY_SCALE_MAX
+#define DEFAULT_DISPLAY_TOOLTIP_ICON        TRUE
 #define DEFAULT_GROUP_POLICY                GROUP_POLICY_PER_APPLICATION
 
 static void            xkb_xfconf_finalize            (GObject          *object);
@@ -59,6 +60,7 @@ struct _XkbXfconf
 
     guint display_type;
     guint display_scale;
+    gboolean display_tooltip_icon;
     guint group_policy;
 };
 
@@ -67,6 +69,7 @@ enum
     PROP_0,
     PROP_DISPLAY_TYPE,
     PROP_DISPLAY_SCALE,
+    PROP_DISPLAY_TOOLTIP_ICON,
     PROP_GROUP_POLICY,
     N_PROPERTIES,
 };
@@ -77,7 +80,7 @@ enum
     LAST_SIGNAL
 };
 
-static guint xkb_xfconf_signals [LAST_SIGNAL] = { NULL, };
+static guint xkb_xfconf_signals [LAST_SIGNAL] = { 0, };
 
 G_DEFINE_TYPE (XkbXfconf, xkb_xfconf, G_TYPE_OBJECT)
 
@@ -101,6 +104,11 @@ xkb_xfconf_class_init (XkbXfconfClass *klass)
                     DISPLAY_SCALE_MIN, DISPLAY_SCALE_MAX, DEFAULT_DISPLAY_SCALE,
                     G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+    g_object_class_install_property (gobject_class, PROP_DISPLAY_TOOLTIP_ICON,
+            g_param_spec_boolean (DISPLAY_TOOLTIP_ICON, NULL, NULL,
+                    DEFAULT_DISPLAY_TOOLTIP_ICON,
+                    G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
     g_object_class_install_property (gobject_class, PROP_GROUP_POLICY,
             g_param_spec_uint (GROUP_POLICY, NULL, NULL,
                     GROUP_POLICY_GLOBAL, GROUP_POLICY_PER_APPLICATION, DEFAULT_GROUP_POLICY,
@@ -120,6 +128,7 @@ xkb_xfconf_init (XkbXfconf *config)
 {
     config->display_type = DEFAULT_DISPLAY_TYPE;
     config->display_scale = DEFAULT_DISPLAY_SCALE;
+    config->display_tooltip_icon = DEFAULT_DISPLAY_TOOLTIP_ICON;
     config->group_policy = DEFAULT_GROUP_POLICY;
 }
 
@@ -143,6 +152,9 @@ xkb_xfconf_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
         case PROP_DISPLAY_SCALE:
             g_value_set_uint (value, config->display_scale);
             break;
+        case PROP_DISPLAY_TOOLTIP_ICON:
+            g_value_set_boolean (value, config->display_tooltip_icon);
+            break;
         case PROP_GROUP_POLICY:
             g_value_set_uint (value, config->group_policy);
             break;
@@ -157,6 +169,7 @@ xkb_xfconf_set_property (GObject *object, guint prop_id, const GValue *value, GP
 {
     XkbXfconf *config = XKB_XFCONF (object);
     guint val_uint;
+    gboolean val_boolean;
 
     switch (prop_id)
     {
@@ -178,6 +191,15 @@ xkb_xfconf_set_property (GObject *object, guint prop_id, const GValue *value, GP
                 g_signal_emit (G_OBJECT (config), xkb_xfconf_signals [CONFIGURATION_CHANGED], 0);
             }
             break;
+        case PROP_DISPLAY_TOOLTIP_ICON:
+            val_boolean = g_value_get_boolean (value);
+            if (config->display_tooltip_icon != val_boolean)
+            {
+                config->display_tooltip_icon = val_boolean;
+                g_object_notify (G_OBJECT (config), DISPLAY_TOOLTIP_ICON);
+                g_signal_emit (G_OBJECT (config), xkb_xfconf_signals [CONFIGURATION_CHANGED], 0);
+            }
+            break;
         case PROP_GROUP_POLICY:
             val_uint = g_value_get_uint (value);
             if (config->group_policy != val_uint)
@@ -207,6 +229,13 @@ xkb_xfconf_get_display_scale (XkbXfconf *config)
     return config->display_scale;
 }
 
+gboolean
+xkb_xfconf_get_display_tooltip_icon (XkbXfconf *config)
+{
+    g_return_val_if_fail (IS_XKB_XFCONF (config), DEFAULT_DISPLAY_TOOLTIP_ICON);
+    return config->display_tooltip_icon;
+}
+
 guint
 xkb_xfconf_get_group_policy (XkbXfconf *config)
 {
@@ -235,6 +264,10 @@ xkb_xfconf_new (const gchar *property_base)
         xfconf_g_property_bind (channel, property, G_TYPE_UINT, config, DISPLAY_SCALE);
         g_free (property);
 
+        property = g_strconcat (property_base, "/" DISPLAY_TOOLTIP_ICON, NULL);
+        xfconf_g_property_bind (channel, property, G_TYPE_BOOLEAN, config, DISPLAY_TOOLTIP_ICON);
+        g_free (property);
+
         property = g_strconcat (property_base, "/" GROUP_POLICY, NULL);
         xfconf_g_property_bind (channel, property, G_TYPE_UINT, config, GROUP_POLICY);
         g_free (property);
diff --git a/panel-plugin/xkb-xfconf.h b/panel-plugin/xkb-xfconf.h
index c1e8603..95b0f64 100644
--- a/panel-plugin/xkb-xfconf.h
+++ b/panel-plugin/xkb-xfconf.h
@@ -46,6 +46,7 @@ XkbXfconf      *xkb_xfconf_new                             (const gchar   *prope
 
 guint           xkb_xfconf_get_display_type                (XkbXfconf     *config);
 guint           xkb_xfconf_get_display_scale               (XkbXfconf     *config);
+gboolean        xkb_xfconf_get_display_tooltip_icon        (XkbXfconf     *config);
 guint           xkb_xfconf_get_group_policy                (XkbXfconf     *config);
 
 G_END_DECLS

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list