[evolution] I#998 - ETree: Hard to see thread expander on selected row
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#998 - ETree: Hard to see thread expander on selected row
- Date: Tue, 7 Jul 2020 16:54:32 +0000 (UTC)
commit d0a53492d5fb1b421e6a08c3ee3fd0116e488327
Author: Milan Crha <mcrha redhat com>
Date: Tue Jul 7 18:52:12 2020 +0200
I#998 - ETree: Hard to see thread expander on selected row
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/998
src/e-util/e-cell-tree.c | 27 ++++++++++++++-------------
src/e-util/e-table-item.c | 12 +++++++++++-
src/e-util/e-table-item.h | 3 ++-
3 files changed, 27 insertions(+), 15 deletions(-)
---
diff --git a/src/e-util/e-cell-tree.c b/src/e-util/e-cell-tree.c
index 7d5c56a9d3..ab7c4e972b 100644
--- a/src/e-util/e-cell-tree.c
+++ b/src/e-util/e-cell-tree.c
@@ -322,7 +322,9 @@ ect_draw (ECellView *ecell_view,
r = rect;
r.width -= 2;
- draw_expander (tree_view, cr, expanded ? GTK_EXPANDER_EXPANDED :
GTK_EXPANDER_COLLAPSED, GTK_STATE_NORMAL, &r);
+ draw_expander (tree_view, cr,
+ expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED,
+ (flags & E_CELL_SELECTED) != 0 ? GTK_STATE_SELECTED : GTK_STATE_NORMAL, &r);
}
}
@@ -392,6 +394,7 @@ typedef struct {
ETreeTableAdapter *etta;
ETreePath node;
gboolean expanded;
+ gboolean selected;
gboolean finish;
GdkRectangle area;
} animate_closure_t;
@@ -418,11 +421,9 @@ animate_expander (gpointer data)
cr = gdk_cairo_create (window);
- draw_expander (
- closure->ectv, cr, closure->expanded ?
- GTK_EXPANDER_SEMI_COLLAPSED :
- GTK_EXPANDER_SEMI_EXPANDED,
- GTK_STATE_NORMAL, &closure->area);
+ draw_expander (closure->ectv, cr,
+ closure->expanded ? GTK_EXPANDER_SEMI_COLLAPSED : GTK_EXPANDER_SEMI_EXPANDED,
+ closure->selected ? GTK_STATE_SELECTED : GTK_STATE_NORMAL, &closure->area);
closure->finish = TRUE;
cairo_destroy (cr);
@@ -449,6 +450,7 @@ ect_event (ECellView *ecell_view,
ETreeTableAdapter *etta = e_cell_tree_get_tree_table_adapter (ecell_view->e_table_model, row);
ETreePath node = e_cell_tree_get_node (ecell_view->e_table_model, row);
gint offset = offset_of_node (tree_view, ecell_view->e_table_model, row, view_col);
+ gboolean selected = e_table_item_get_row_selected (tree_view->cell_view.e_table_item_view, row);
gint result;
layout = GTK_LAYOUT (tree_view->canvas);
@@ -477,17 +479,16 @@ ect_event (ECellView *ecell_view,
area.height += hgt;
cr = gdk_cairo_create (window);
- draw_expander (
- tree_view, cr, expanded ?
- GTK_EXPANDER_SEMI_EXPANDED :
- GTK_EXPANDER_SEMI_COLLAPSED,
- GTK_STATE_NORMAL, &area);
+ draw_expander (tree_view, cr,
+ expanded ? GTK_EXPANDER_SEMI_EXPANDED : GTK_EXPANDER_SEMI_COLLAPSED,
+ selected ? GTK_STATE_SELECTED : GTK_STATE_NORMAL, &area);
cairo_destroy (cr);
closure->ectv = tree_view;
closure->etta = etta;
closure->node = node;
closure->expanded = expanded;
+ closure->selected = selected;
closure->area = area;
tree_view->animate_timeout =
e_named_timeout_add_full (G_PRIORITY_DEFAULT,
@@ -521,7 +522,7 @@ ect_event (ECellView *ecell_view,
tree_view, cr,
e_tree_table_adapter_node_is_expanded (etta, node) ?
GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED,
- in_expander ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL, &area);
+ selected ? GTK_STATE_SELECTED : in_expander ? GTK_STATE_PRELIGHT :
GTK_STATE_NORMAL, &area);
cairo_destroy (cr);
tree_view->prelit = in_expander;
@@ -548,7 +549,7 @@ ect_event (ECellView *ecell_view,
tree_view, cr,
e_tree_table_adapter_node_is_expanded (etta, node) ?
GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED,
- GTK_STATE_NORMAL, &area);
+ selected ? GTK_STATE_SELECTED : GTK_STATE_NORMAL, &area);
cairo_destroy (cr);
tree_view->prelit = FALSE;
diff --git a/src/e-util/e-table-item.c b/src/e-util/e-table-item.c
index 0e96fac7f4..8184551bbd 100644
--- a/src/e-util/e-table-item.c
+++ b/src/e-util/e-table-item.c
@@ -1883,6 +1883,16 @@ eti_unrealize (GnomeCanvasItem *item)
(*GNOME_CANVAS_ITEM_CLASS (e_table_item_parent_class)->unrealize)(item);
}
+gboolean
+e_table_item_get_row_selected (ETableItem *eti,
+ gint row)
+{
+ g_return_val_if_fail (E_IS_TABLE_ITEM (eti), FALSE);
+
+ return row >= 0 && row < eti->rows &&
+ e_selection_model_is_row_selected (E_SELECTION_MODEL (eti->selection), view_to_model_row
(eti, row));
+}
+
static void
eti_draw_grid_line (ETableItem *eti,
cairo_t *cr,
@@ -2035,7 +2045,7 @@ eti_draw (GnomeCanvasItem *item,
xd = x_offset;
- selected = e_selection_model_is_row_selected (E_SELECTION_MODEL (eti->selection),
view_to_model_row (eti,row));
+ selected = e_table_item_get_row_selected (eti, row);
g_object_get (
eti->selection,
diff --git a/src/e-util/e-table-item.h b/src/e-util/e-table-item.h
index 4bd788fc1f..0e982d00d1 100644
--- a/src/e-util/e-table-item.h
+++ b/src/e-util/e-table-item.h
@@ -264,7 +264,8 @@ void e_table_item_cursor_scrolled (ETableItem *eti);
void e_table_item_cancel_scroll_to_cursor
(ETableItem *eti);
-
+gboolean e_table_item_get_row_selected (ETableItem *eti,
+ gint row);
void e_table_item_freeze (ETableItem *eti);
void e_table_item_thaw (ETableItem *eti);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]