@@ -248,6 +248,27 @@ static void applet_change_background(MatePanelApplet* applet, MatePanelAppletBac
248248 type == PANEL_NO_BACKGROUND ? GTK_SHADOW_NONE : GTK_SHADOW_IN );
249249}
250250
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+
251272/* Replacement for the default scroll handler that also cares about the wrapping property.
252273 * Alternative: Add behaviour to libwnck (to the WnckPager widget).
253274 */
@@ -493,7 +514,6 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
493514 PagerData * pager ;
494515 GtkActionGroup * action_group ;
495516 gboolean display_names ;
496- GtkCssProvider * provider ;
497517
498518 pager = g_new0 (PagerData , 1 );
499519
@@ -546,16 +566,6 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
546566 context = gtk_widget_get_style_context (pager -> pager );
547567 gtk_style_context_add_class (context , "wnck-pager" );
548568
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-
559569 g_signal_connect (G_OBJECT (pager -> pager ), "destroy" , G_CALLBACK (destroy_pager ), pager );
560570
561571 /* overwrite default WnckPager widget scroll-event */
@@ -567,6 +577,7 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
567577 g_signal_connect (G_OBJECT (pager -> applet ), "unrealize" , G_CALLBACK (applet_unrealized ), pager );
568578 g_signal_connect (G_OBJECT (pager -> applet ), "change_orient" , G_CALLBACK (applet_change_orient ), pager );
569579 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 );
570581
571582 gtk_widget_show (pager -> pager );
572583 gtk_widget_show (pager -> applet );
0 commit comments