From 96d6c2d108a3f69759a5a23f76e6b4d309da0b15 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Mon, 7 Mar 2011 00:17:08 -0500 Subject: [PATCH] treeview: propagate the selected state from the row An expander in a row can't be selected on its own otherwise. This way themes can override the expander colors when the row is selected. https://bugzilla.gnome.org/show_bug.cgi?id=644089 --- gtk/gtktreeview.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index be3721963..aefe6f621 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -10026,6 +10026,7 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view, gint x2; gint vertical_separator; gint expander_size; + GtkCellRendererState flags; widget = GTK_WIDGET (tree_view); context = gtk_widget_get_style_context (widget); @@ -10051,10 +10052,17 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view, state |= GTK_STATE_FLAG_INSENSITIVE; else { + flags = 0; + + if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) + flags |= GTK_CELL_RENDERER_SELECTED; + + state = gtk_cell_renderer_get_state (NULL, widget, flags); + if (node == tree_view->priv->button_pressed_node && x >= area.x && x <= (area.x + area.width) && y >= area.y && y <= (area.y + area.height)) - state |= GTK_STATE_FLAG_SELECTED; + state |= GTK_STATE_FLAG_FOCUSED; if (node == tree_view->priv->prelight_node && tree_view->priv->arrow_prelit) -- 2.43.2