summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2019-03-03 10:38:18 +0100
committerChristoph Reiter <creiter@src.gnome.org>2019-03-04 17:07:13 +0100
commit348912dff4efe884dd66fe616144a6e1bdbfbe9b (patch)
tree96d633b84e8b204f30235f0885615f4e704b58f4
parent45ea288ba24e09a346d83fb71d3626cced1c6272 (diff)
downloadgtk+-348912dff4efe884dd66fe616144a6e1bdbfbe9b.tar.gz
treeview: make sure separator nodes have a height > 0
In case the theme doesn't set a height/min-height for the treeview separator the treeview drawing gets confused and draws rows on top of each other depending on the redraw area. This is due to gtk_tree_view_get_row_height() assuming that a node with a height <= 0 is not set and not a separator and it will default to the expander size. Ideally gtk_tree_view_get_row_height() would know if it operates on a separator, but there are too many calls/levels, so just make sure the separator height is at least 1 (Adwaita already sets "min-height: 2px", so no change there) Cherry-picked from !614 to master
-rw-r--r--gtk/gtktreeview.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index e8191a9fef..1a4ed0488a 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -5614,6 +5614,8 @@ validate_row (GtkTreeView *tree_view,
if (is_separator)
{
height = separator_height;
+ /* gtk_tree_view_get_row_height() assumes separator nodes are > 0 */
+ height = MAX (height, 1);
}
else
{