[gtk+/wip/window-unfocused-fixes: 9/13] treeview: Set GTK_STATE_FLAG_WINDOW_UNFOCUSED on draw
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/window-unfocused-fixes: 9/13] treeview: Set GTK_STATE_FLAG_WINDOW_UNFOCUSED on draw
- Date: Tue, 13 Dec 2011 21:03:55 +0000 (UTC)
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]