[glade] Added workaround for child bg bug on Adwaita theme on the workspace.



commit ba0345e36dfaeac72aebcf909ee83533d61c9f66
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date:   Thu Nov 3 17:42:02 2011 -0300

    Added workaround for child bg bug on Adwaita theme on the workspace.

 ChangeLog                     |    7 +++++++
 gladeui/glade-design-layout.c |   23 +++++++++++++++++++++++
 gladeui/glade-design-view.c   |   14 +++++++++-----
 3 files changed, 39 insertions(+), 5 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 78b661c..c8df621 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 eefbcbd..431adac 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 dcbbb5e..a789f5b 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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]