@@ -248,6 +248,27 @@ static void applet_change_background(MatePanelApplet* applet, MatePanelAppletBac
248
248
type == PANEL_NO_BACKGROUND ? GTK_SHADOW_NONE : GTK_SHADOW_IN );
249
249
}
250
250
251
+ static void applet_style_updated (MatePanelApplet * applet , GtkStyleContext * context )
252
+ {
253
+ GtkCssProvider * provider ;
254
+ GdkRGBA color ;
255
+
256
+ provider = gtk_css_provider_new ();
257
+
258
+ /* Provide a fallback color for the highlighted workspace based on the current theme */
259
+ gtk_style_context_lookup_color (context , "theme_selected_bg_color" , & color );
260
+ gchar * bg_css = g_strconcat (".wnck-pager:selected {\n"
261
+ " background-color:" , gdk_rgba_to_string (& color ), ";\n"
262
+ "}" , NULL );
263
+ gtk_css_provider_load_from_data (provider , bg_css , -1 , NULL );
264
+ g_free (bg_css );
265
+
266
+ gtk_style_context_add_provider (context ,
267
+ GTK_STYLE_PROVIDER (provider ),
268
+ GTK_STYLE_PROVIDER_PRIORITY_FALLBACK );
269
+ g_object_unref (provider );
270
+ }
271
+
251
272
/* Replacement for the default scroll handler that also cares about the wrapping property.
252
273
* Alternative: Add behaviour to libwnck (to the WnckPager widget).
253
274
*/
@@ -493,7 +514,6 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
493
514
PagerData * pager ;
494
515
GtkActionGroup * action_group ;
495
516
gboolean display_names ;
496
- GtkCssProvider * provider ;
497
517
498
518
pager = g_new0 (PagerData , 1 );
499
519
@@ -546,16 +566,6 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
546
566
context = gtk_widget_get_style_context (pager -> pager );
547
567
gtk_style_context_add_class (context , "wnck-pager" );
548
568
549
- provider = gtk_css_provider_new ();
550
- gtk_css_provider_load_from_data (provider ,
551
- ".wnck-pager:selected {\n"
552
- "background-color: #4A90D9; }" ,
553
- -1 , NULL );
554
- gtk_style_context_add_provider (context ,
555
- GTK_STYLE_PROVIDER (provider ),
556
- GTK_STYLE_PROVIDER_PRIORITY_FALLBACK );
557
- g_object_unref (provider );
558
-
559
569
g_signal_connect (G_OBJECT (pager -> pager ), "destroy" , G_CALLBACK (destroy_pager ), pager );
560
570
561
571
/* overwrite default WnckPager widget scroll-event */
@@ -567,6 +577,7 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
567
577
g_signal_connect (G_OBJECT (pager -> applet ), "unrealize" , G_CALLBACK (applet_unrealized ), pager );
568
578
g_signal_connect (G_OBJECT (pager -> applet ), "change_orient" , G_CALLBACK (applet_change_orient ), pager );
569
579
g_signal_connect (G_OBJECT (pager -> applet ), "change_background" , G_CALLBACK (applet_change_background ), pager );
580
+ g_signal_connect (G_OBJECT (pager -> applet ), "style-updated" , G_CALLBACK (applet_style_updated ), context );
570
581
571
582
gtk_widget_show (pager -> pager );
572
583
gtk_widget_show (pager -> applet );
0 commit comments