[gtk+/wip/window-unfocused-fixes: 9/13] treeview: Set GTK_STATE_FLAG_WINDOW_UNFOCUSED on draw



commit 2c2c771873c80d7f7cba3965bb28b3cf12fef84e
Author: Rui Matos <tiagomatos gmail com>
Date:   Tue Dec 13 20:29:43 2011 +0000

    treeview: Set GTK_STATE_FLAG_WINDOW_UNFOCUSED on draw
    
    https://bugzilla.gnome.org/show_bug.cgi?id=666126

 gtk/gtktreeview.c |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index d0baa45..a1fe9c4 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -2186,9 +2186,16 @@ gtk_tree_view_map (GtkWidget *widget)
 static void
 gtk_tree_view_ensure_background (GtkTreeView *tree_view)
 {
+  GtkWidget *widget = GTK_WIDGET (tree_view);
   GtkStyleContext *context;
+  GtkStateFlags state = 0;
 
-  context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
+  context = gtk_widget_get_style_context (widget);
+
+  state |= (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_WINDOW_UNFOCUSED);
+
+  gtk_style_context_save (context);
+  gtk_style_context_set_state (context, state);
 
   gtk_style_context_save (context);
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW);
@@ -2196,6 +2203,7 @@ gtk_tree_view_ensure_background (GtkTreeView *tree_view)
   gtk_style_context_restore (context);
 
   gtk_style_context_set_background (context, tree_view->priv->header_window);
+  gtk_style_context_restore (context);
 }
 
 static void
@@ -4708,12 +4716,12 @@ gtk_tree_view_bin_draw (GtkWidget      *widget,
   gint grid_line_width;
   gboolean draw_vgrid_lines, draw_hgrid_lines;
   GtkStyleContext *context;
-  GtkStateFlags state;
+  GtkStateFlags widget_state;
   gboolean parity;
 
   rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL);
   context = gtk_widget_get_style_context (widget);
-  state = gtk_widget_get_state_flags (widget);
+  widget_state = gtk_widget_get_state_flags (widget);
 
   gtk_widget_style_get (widget,
 			"horizontal-separator", &horizontal_separator,
@@ -4744,7 +4752,7 @@ gtk_tree_view_bin_draw (GtkWidget      *widget,
   if (tree_view->priv->height < bin_window_height)
     {
       gtk_style_context_save (context);
-      gtk_style_context_set_state (context, state);
+      gtk_style_context_set_state (context, widget_state);
       gtk_style_context_add_class (context, GTK_STYLE_CLASS_CELL);
 
       gtk_render_background (context, cr,
@@ -4969,7 +4977,8 @@ gtk_tree_view_bin_draw (GtkWidget      *widget,
 
           gtk_style_context_save (context);
 
-          state = gtk_cell_renderer_get_state (NULL, widget, flags);
+          state = (widget_state & GTK_STATE_FLAG_WINDOW_UNFOCUSED);
+          state |= gtk_cell_renderer_get_state (NULL, widget, flags);
           gtk_style_context_set_state (context, state);
 
           gtk_style_context_add_class (context, GTK_STYLE_CLASS_CELL);
@@ -10080,6 +10089,8 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view,
   if (node->children != NULL)
     state |= GTK_STATE_FLAG_ACTIVE;
 
+  state |= (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_WINDOW_UNFOCUSED);
+
   gtk_style_context_save (context);
 
   gtk_style_context_set_state (context, state);



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