[Xfce4-commits] [panel-plugins/xfce4-sensors-plugin] 01/01: Fix bug 13384 by storing the pointers to the css providers

noreply at xfce.org noreply at xfce.org
Thu Mar 2 22:40:57 CET 2017


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

timystery pushed a commit to branch master
in repository panel-plugins/xfce4-sensors-plugin.

commit fb3f4beba1345c9746ac0b21dec8793f63fa45f4
Author: Fabian <timystery at arcor.de>
Date:   Thu Mar 2 22:39:47 2017 +0100

    Fix bug 13384 by storing the pointers to the css providers
---
 include/sensors-interface-plugin.h |  3 +-
 include/sensors-interface-types.h  |  3 ++
 panel-plugin/sensors-plugin.c      | 57 ++++++++++++++++++++------------------
 3 files changed, 35 insertions(+), 28 deletions(-)

diff --git a/include/sensors-interface-plugin.h b/include/sensors-interface-plugin.h
index 3bb184f..510fadb 100644
--- a/include/sensors-interface-plugin.h
+++ b/include/sensors-interface-plugin.h
@@ -125,7 +125,8 @@ typedef struct {
 
     /* contains the progress bar panels */
     /* FIXME:    Might be replaced by GPtrArray as well */
-    GtkWidget* panels[MAX_NUM_CHIPS][MAX_NUM_FEATURES];
+    t_labelledlevelbar* panels[MAX_NUM_CHIPS][MAX_NUM_FEATURES];
+    GtkCssProvider  *css_provider;
     /*    GArray *panels_array; */
 
     /* contains the tacho panels */
diff --git a/include/sensors-interface-types.h b/include/sensors-interface-types.h
index 05f7893..03a836d 100644
--- a/include/sensors-interface-types.h
+++ b/include/sensors-interface-types.h
@@ -34,6 +34,9 @@ typedef struct {
 
     /* the surrounding box */
     GtkWidget *databox;
+
+    /* We seem to need a seperate css provider per levelbar */
+    GtkCssProvider  *css_provider;
 } t_labelledlevelbar;
 
 
diff --git a/panel-plugin/sensors-plugin.c b/panel-plugin/sensors-plugin.c
index 0796ac4..ac4b681 100644
--- a/panel-plugin/sensors-plugin.c
+++ b/panel-plugin/sensors-plugin.c
@@ -109,16 +109,19 @@ sensors_set_levelbar_size (GtkWidget *ptr_levelbar, int siz_panelheight, int pan
 
 
 static void
-sensors_set_bar_color (GtkWidget *ptr_levelbar, double val_percentage, gchar* user_bar_color,
+sensors_set_bar_color (t_labelledlevelbar *ptr_labelledlevelbar, double val_percentage, gchar* user_bar_color,
                        t_sensors *ptr_sensorsstructure)
 {
-    GtkCssProvider *ptr_gtkcssprovider;
-    GdkDisplay *ptr_gdkdisplay;
-    GdkScreen *ptr_gdkscreen;
+    GtkWidget *ptr_levelbar;
 
     gchar str_gtkcssdata[256] = "levelbar block.";
     gchar str_levelbarid[32];
 
+    g_return_if_fail(ptr_labelledlevelbar != NULL);
+    ptr_levelbar = ptr_labelledlevelbar->progressbar;
+
+    g_return_if_fail (G_IS_OBJECT(ptr_levelbar));
+
     //TRACE ("enters sensors_set_bar_color");
 
     g_snprintf(str_levelbarid, 32, "warn-high%lX", (unsigned long int) ptr_levelbar);
@@ -126,15 +129,12 @@ sensors_set_bar_color (GtkWidget *ptr_levelbar, double val_percentage, gchar* us
     g_strlcat(str_gtkcssdata, str_levelbarid, sizeof(str_gtkcssdata));
     g_strlcat(str_gtkcssdata, " {\n", sizeof(str_gtkcssdata));
 
-    g_return_if_fail (G_IS_OBJECT(ptr_levelbar));
-
     if (ptr_sensorsstructure->show_colored_bars) {
         g_strlcat(str_gtkcssdata, "   background-color: ", sizeof(str_gtkcssdata));
         g_strlcat(str_gtkcssdata, user_bar_color, sizeof(str_gtkcssdata));
         g_strlcat(str_gtkcssdata, ";\n", sizeof(str_gtkcssdata));
     }
 
-
     g_strlcat(str_gtkcssdata,   "   padding: 1px;\n"
                                 "   border-style: ridge;\n"
                                 "}\n", sizeof(str_gtkcssdata));
@@ -157,19 +157,9 @@ sensors_set_bar_color (GtkWidget *ptr_levelbar, double val_percentage, gchar* us
                                   GTK_LEVEL_BAR_OFFSET_HIGH,
                                   0.9);
 
-    ptr_gtkcssprovider = gtk_css_provider_new ();
-    ptr_gdkdisplay = gdk_display_get_default ();
-    ptr_gdkscreen = gdk_display_get_default_screen (ptr_gdkdisplay);
-
-    gtk_style_context_add_provider_for_screen (ptr_gdkscreen,
-                                 GTK_STYLE_PROVIDER (ptr_gtkcssprovider),
-                                 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-
-    gtk_css_provider_load_from_data (GTK_CSS_PROVIDER(ptr_gtkcssprovider),
+    gtk_css_provider_load_from_data (GTK_CSS_PROVIDER(ptr_labelledlevelbar->css_provider),
                                    str_gtkcssdata, -1, NULL);
 
-    g_object_unref (ptr_gtkcssprovider);
-
     //TRACE ("leaves sensors_set_bar_color");
 }
 
@@ -219,6 +209,8 @@ sensors_remove_graphical_panel (t_sensors *ptr_sensorsstructure)
             if (ptr_chipfeature->show == TRUE) {
                 ptr_labelledlevelbar = (t_labelledlevelbar*) ptr_sensorsstructure->panels[idx_sensorchips][idx_feature];
 
+                g_object_unref (ptr_labelledlevelbar->css_provider);
+
                 if (ptr_sensorsstructure->show_labels == TRUE) {
                     gtk_widget_hide (ptr_labelledlevelbar->label);
                     gtk_widget_destroy (ptr_labelledlevelbar->label);
@@ -294,7 +286,7 @@ sensors_update_graphical_panel (t_sensors *ptr_sensorsstructure)
             g_assert (ptr_chipfeature != NULL);
 
             if (ptr_chipfeature->show == TRUE) {
-                ptr_labelledlevelbar = (t_labelledlevelbar*) ptr_sensorsstructure->panels[idx_sensorchips][idx_feature];
+                ptr_labelledlevelbar = ptr_sensorsstructure->panels[idx_sensorchips][idx_feature];
 
                 ptr_levelbar = ptr_labelledlevelbar->progressbar;
                 g_return_if_fail (G_IS_OBJECT(ptr_levelbar));
@@ -302,7 +294,7 @@ sensors_update_graphical_panel (t_sensors *ptr_sensorsstructure)
                 sensors_set_levelbar_size (ptr_levelbar, (int) ptr_sensorsstructure->panel_size,
                                       ptr_sensorsstructure->orientation);
                 val_percentage = sensors_get_percentage (ptr_chipfeature);
-                sensors_set_bar_color (ptr_levelbar, val_percentage, ptr_chipfeature->color,
+                sensors_set_bar_color (ptr_labelledlevelbar, val_percentage, ptr_chipfeature->color,
                                        ptr_sensorsstructure);
 
                 gtk_level_bar_set_value(GTK_LEVEL_BAR(ptr_levelbar), val_percentage);
@@ -363,6 +355,9 @@ sensors_add_graphical_display (t_sensors *sensors)
     gchar *str_barlabeltext, *str_panellabeltext;
     guint len_barlabeltext;
     gint size_panel = (gint) sensors->panel_size;
+    GtkCssProvider *ptr_gtkcssprovider;
+    GdkDisplay *ptr_gdkdisplay;
+    GdkScreen *ptr_gdkscreen;
 
     if (!sensors->cover_panel_rows && xfce_panel_plugin_get_mode(sensors->plugin) != XFCE_PANEL_PLUGIN_MODE_DESKBAR)
         size_panel /= xfce_panel_plugin_get_nrows (sensors->plugin);
@@ -410,6 +405,14 @@ sensors_add_graphical_display (t_sensors *sensors)
                 ptr_labelledlevelbar = g_new (t_labelledlevelbar, 1);
                 ptr_labelledlevelbar->progressbar = widget_progbar;
 
+                ptr_labelledlevelbar->css_provider = ptr_gtkcssprovider = gtk_css_provider_new ();
+                ptr_gdkdisplay = gdk_display_get_default ();
+                ptr_gdkscreen = gdk_display_get_default_screen (ptr_gdkdisplay);
+
+                gtk_style_context_add_provider_for_screen (ptr_gdkscreen,
+                                 GTK_STYLE_PROVIDER (ptr_gtkcssprovider),
+                                 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
                 /* create the label stuff only if needed - saves some memory! */
                 if (sensors->show_labels == TRUE) {
                     str_barlabeltext = g_strdup (ptr_chipfeature->name);
@@ -443,7 +446,7 @@ sensors_add_graphical_display (t_sensors *sensors)
                 gtk_box_pack_start (GTK_BOX(widget_databox), widget_progbar, FALSE, FALSE, 0);
 
                 ptr_labelledlevelbar->databox = widget_databox;
-                sensors->panels[idx_sensorchips][idx_feature] = (GtkWidget*) ptr_labelledlevelbar;
+                sensors->panels[idx_sensorchips][idx_feature] = ptr_labelledlevelbar;
 
                 gtk_box_pack_start (GTK_BOX (sensors->widget_sensors),
                                     widget_databox, FALSE, FALSE, INNER_BORDER);
@@ -550,7 +553,7 @@ sensors_add_tacho_display (t_sensors *sensors)
 static gboolean
 sensors_show_graphical_display (t_sensors *sensors)
 {
-    GtkCssProvider *ptr_gtkcssprovider;
+    //GtkCssProvider *ptr_gtkcssprovider;
     GdkDisplay *ptr_gdkdisplay;
     GdkScreen *ptr_gdkscreen;
     GFile *ptr_cssdatafile = NULL;
@@ -569,12 +572,12 @@ sensors_show_graphical_display (t_sensors *sensors)
 
     if (sensors->bars_created == FALSE) {
 
-        ptr_gtkcssprovider = gtk_css_provider_new ();
+        sensors->css_provider = gtk_css_provider_new ();
         ptr_gdkdisplay = gdk_display_get_default ();
         ptr_gdkscreen = gdk_display_get_default_screen (ptr_gdkdisplay);
 
         gtk_style_context_add_provider_for_screen (ptr_gdkscreen,
-                                     GTK_STYLE_PROVIDER (ptr_gtkcssprovider),
+                                     GTK_STYLE_PROVIDER (sensors->css_provider),
                                      GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
 
         g_snprintf(str_localcssfile, sizeof(str_localcssfile), "%s/%s",
@@ -590,13 +593,13 @@ sensors_show_graphical_display (t_sensors *sensors)
         }
 
         if (NULL != ptr_cssdatafile) {
-            gtk_css_provider_load_from_file(GTK_CSS_PROVIDER(ptr_gtkcssprovider),
+            gtk_css_provider_load_from_file(GTK_CSS_PROVIDER(sensors->css_provider),
                                     ptr_cssdatafile, NULL);
 
             g_object_unref (ptr_cssdatafile);
         }
         else {
-            gtk_css_provider_load_from_data (GTK_CSS_PROVIDER(ptr_gtkcssprovider),
+            gtk_css_provider_load_from_data (GTK_CSS_PROVIDER(sensors->css_provider),
                                     "levelbar block.full {\n"
                                     "   background-color: "
                                     COLOR_ERROR
@@ -630,7 +633,7 @@ sensors_show_graphical_display (t_sensors *sensors)
                                     "}\n",
                                    -1, NULL);
         }
-        g_object_unref (ptr_gtkcssprovider);
+        g_object_unref (sensors->css_provider);
 
         sensors_add_graphical_display (sensors);
     }

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


More information about the Xfce4-commits mailing list