diff --git a/shell/gnome-control-center.c b/shell/gnome-control-center.c index 2c4e1efa9..756385b41 100644 --- a/shell/gnome-control-center.c +++ b/shell/gnome-control-center.c @@ -898,13 +898,28 @@ gnome_control_center_class_init (GnomeControlCenterClass *klass) shell_class->set_active_panel_from_id = _shell_set_active_panel_from_id; } +static void +vbox_style_set_cb (GtkWidget *widget, + GtkStyle *old_style) +{ + GtkWidget *parent; + GtkStyle *style; + + parent = gtk_widget_get_parent (widget); + style = gtk_widget_get_style (widget); + gtk_widget_modify_bg (parent, GTK_STATE_NORMAL, + &style->base[GTK_STATE_NORMAL]); + gtk_widget_modify_fg (parent, GTK_STATE_NORMAL, + &style->text[GTK_STATE_NORMAL]); + +} + static void gnome_control_center_init (GnomeControlCenter *self) { GError *err = NULL; - GtkWidget *vbox, *parent; + GtkWidget *vbox; GnomeControlCenterPrivate *priv; - GtkStyle *style; priv = self->priv = CONTROL_CENTER_PRIVATE (self); @@ -937,12 +952,11 @@ gnome_control_center_init (GnomeControlCenter *self) vbox = W (priv->builder, "main-vbox"); gtk_widget_set_size_request (vbox, 0, -1); - parent = gtk_widget_get_parent (vbox); - style = gtk_widget_get_style (vbox); - gtk_widget_modify_bg (parent, GTK_STATE_NORMAL, - &style->base[GTK_STATE_NORMAL]); - gtk_widget_modify_fg (parent, GTK_STATE_NORMAL, - &style->text[GTK_STATE_NORMAL]); + /* make sure the background of the vbox uses base/text colour combinations + * and is updated if the style changes */ + vbox_style_set_cb (vbox, NULL); + g_signal_connect (vbox, "style-set", G_CALLBACK (vbox_style_set_cb), + NULL); /* load the available settings panels */ fill_model (self);