summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2011-11-03 17:42:02 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2011-11-03 17:42:02 -0300
commitba0345e36dfaeac72aebcf909ee83533d61c9f66 (patch)
tree997a4d383cca78107348baa0c138a4d5988772b2
parentdb4388e146e7f4eb1c040cfdbf17b7db245386ea (diff)
downloadglade-ba0345e36dfaeac72aebcf909ee83533d61c9f66.tar.gz
Added workaround for child bg bug on Adwaita theme on the workspace.
-rw-r--r--ChangeLog7
-rw-r--r--gladeui/glade-design-layout.c23
-rw-r--r--gladeui/glade-design-view.c14
3 files changed, 39 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 78b661cc..c8df6213 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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