Rework pbar css handling
Create provider right after creating the widget and directly apply sizing css. Apply only color css when needed via set_progressbar_csscolor()master
							parent
							
								
									ef926747b4
								
							
						
					
					
						commit
						57fb955ab7
					
				|  | @ -432,6 +432,9 @@ static t_global_monitor * monitor_new(XfcePanelPlugin *plugin) | |||
| { | ||||
|     t_global_monitor *global; | ||||
|     gint i; | ||||
| #if GTK_CHECK_VERSION (3, 16, 0) | ||||
|     GtkCssProvider *css_provider; | ||||
| #endif | ||||
| 
 | ||||
|     global = g_new(t_global_monitor, 1); | ||||
|     global->timeout_id = 0; | ||||
|  | @ -501,6 +504,21 @@ static t_global_monitor * monitor_new(XfcePanelPlugin *plugin) | |||
|     for (i = 0; i < SUM; i++) | ||||
|     { | ||||
|         global->monitor->status[i] = GTK_WIDGET(gtk_progress_bar_new()); | ||||
| #if GTK_CHECK_VERSION (3, 16, 0) | ||||
|         css_provider = gtk_css_provider_new (); | ||||
|         gtk_style_context_add_provider ( | ||||
|             GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (global->monitor->status[i]))), | ||||
|             GTK_STYLE_PROVIDER (css_provider), | ||||
|             GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); | ||||
|         gtk_css_provider_load_from_data (css_provider, "\
 | ||||
|             progressbar.horizontal trough { min-height: 4px; }\ | ||||
|             progressbar.horizontal progress { min-height: 4px; }\ | ||||
|             progressbar.vertical trough { min-width: 4px; }\ | ||||
|             progressbar.vertical progress { min-width: 4px; }", | ||||
|              -1, NULL); | ||||
|         g_object_set_data(G_OBJECT(global->monitor->status[i]), "css_provider", css_provider); | ||||
| #endif | ||||
| 
 | ||||
|         gtk_box_pack_start(GTK_BOX(global->box_bars), | ||||
|                            GTK_WIDGET(global->monitor->status[i]), FALSE, FALSE, 0); | ||||
|         gtk_widget_show(global->monitor->status[i]); | ||||
|  | @ -555,28 +573,16 @@ static void set_label_csscolor(GtkWidget* label, GdkRGBA* color) | |||
| /* ---------------------------------------------------------------------------------------------- */ | ||||
| static void set_progressbar_csscolor(GtkWidget* pbar, GdkRGBA* color) | ||||
| { | ||||
|     GtkCssProvider *css_provider; | ||||
|     gchar * css; | ||||
| #if GTK_CHECK_VERSION (3, 20, 0) | ||||
|     gchar * cssminsizes = "min-width: 4px; min-height: 0px"; | ||||
|     if (gtk_orientable_get_orientation(GTK_ORIENTABLE(pbar)) == GTK_ORIENTATION_HORIZONTAL) | ||||
|         cssminsizes = "min-width: 0px; min-height: 4px"; | ||||
|     css = g_strdup_printf("progressbar trough { %s } \
 | ||||
|                            progressbar progress { %s ; \ | ||||
|                                                   background-color: %s; background-image: none; }", | ||||
|                           cssminsizes, cssminsizes, | ||||
|     css = g_strdup_printf("progressbar progress { background-color: %s; background-image: none; }", | ||||
| #else | ||||
|     css = g_strdup_printf(".progressbar progress { background-color: %s; background-image: none; }", | ||||
| #endif | ||||
|                           gdk_rgba_to_string(color)); | ||||
|     DBG("setting pbar css to %s", css); | ||||
|     css_provider = gtk_css_provider_new (); | ||||
|     gtk_css_provider_load_from_data (css_provider, css, strlen(css), NULL); | ||||
|     gtk_css_provider_load_from_data (g_object_get_data(G_OBJECT(pbar),"css_provider"), css, strlen(css), NULL); | ||||
|     g_free(css); | ||||
|     gtk_style_context_add_provider ( | ||||
|         GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (pbar))), | ||||
|         GTK_STYLE_PROVIDER (css_provider), | ||||
|         GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); | ||||
| } | ||||
| 
 | ||||
| /* ---------------------------------------------------------------------------------------------- */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Landry Breuil
						Landry Breuil