diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | gladeui/glade-design-layout.c | 23 | ||||
-rw-r--r-- | gladeui/glade-design-view.c | 14 |
3 files changed, 39 insertions, 5 deletions
@@ -1,3 +1,10 @@ +2011-11-03 Juan Pablo Ugarte <juanpablougarte@gmail.com> + + * gladeui/glade-design-layout.c: Added workaround for child bg bug on Adwaita theme. + + * gladeui/glade-design-view.c: cleaned up glade_design_view_style_updated() + to make it use new style context instead of modifying its own. + 2011-10-31 Juan Pablo Ugarte <juanpablougarte@gmail.com> * gladeui/glade-design-layout.c: diff --git a/gladeui/glade-design-layout.c b/gladeui/glade-design-layout.c index eefbcbd9..431adacc 100644 --- a/gladeui/glade-design-layout.c +++ b/gladeui/glade-design-layout.c @@ -930,6 +930,24 @@ on_glade_widget_name_notify (GObject *gobject, GParamSpec *pspec, GladeDesignLay } static void +widget_reset_bg_color (GtkWidget *widget) +{ + GtkStyleContext *context = gtk_style_context_new (); + GtkWidgetPath *path = gtk_widget_path_new (); + GdkRGBA bg_color; + + gtk_widget_path_append_type (path, G_OBJECT_TYPE (widget)); + gtk_style_context_set_path (context, path); + gtk_widget_path_free (path); + + gtk_style_context_get_background_color (context, GTK_STATE_FLAG_NORMAL, &bg_color); + gtk_widget_override_background_color (widget, GTK_STATE_FLAG_NORMAL, &bg_color); + + g_object_unref (context); +} + + +static void glade_design_layout_add (GtkContainer *container, GtkWidget *widget) { GladeDesignLayoutPrivate *priv = GLADE_DESIGN_LAYOUT_GET_PRIVATE (container); @@ -939,6 +957,11 @@ glade_design_layout_add (GtkContainer *container, GtkWidget *widget) layout->priv->current_width = 0; layout->priv->current_height = 0; + /*FIXME: Adwaita theme, for some unknown reason, overwrites the window default bg. + * This is a workaround to reset it to the default value. + */ + widget_reset_bg_color (widget); + gtk_widget_set_parent_window (widget, priv->offscreen_window); GTK_CONTAINER_CLASS (glade_design_layout_parent_class)->add (container, diff --git a/gladeui/glade-design-view.c b/gladeui/glade-design-view.c index dcbbb5ea..a789f5b5 100644 --- a/gladeui/glade-design-view.c +++ b/gladeui/glade-design-view.c @@ -296,16 +296,20 @@ glade_design_view_style_updated (GtkWidget *widget) { GladeDesignViewPrivate *priv = GLADE_DESIGN_VIEW_GET_PRIVATE (widget); GtkWidget *viewport = gtk_bin_get_child (GTK_BIN (priv->scrolled_window)); - GtkStyleContext *context = gtk_widget_get_style_context (viewport); + GtkStyleContext *context = gtk_style_context_new (); + GtkWidgetPath *path = gtk_widget_path_new (); GdkRGBA bg_color; - gtk_style_context_save (context); - + g_type_class_ref (GTK_TYPE_TREE_VIEW); + gtk_widget_path_append_type (path, GTK_TYPE_WIDGET); + gtk_style_context_set_path (context, path); gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); + gtk_widget_path_free (path); + gtk_style_context_get_background_color (context, GTK_STATE_FLAG_NORMAL, &bg_color); gtk_widget_override_background_color (viewport, GTK_STATE_FLAG_NORMAL, &bg_color); - - gtk_style_context_restore (context); + + g_object_unref (context); } static void |