diff options
author | Christian Hergert <chergert@redhat.com> | 2016-05-06 16:12:29 +0300 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2018-06-01 11:04:45 -0400 |
commit | d6a29e1b8cb815a2dfc00cd17681ef13e0487a27 (patch) | |
tree | 8c9f388296b2ddf0e12be3ad45985306e1e186ed | |
parent | 1918fefbd4ae8c6227beefc761420da32118e043 (diff) | |
download | gtk+-d6a29e1b8cb815a2dfc00cd17681ef13e0487a27.tar.gz |
treeview: respect expander-size style property
Without enforcement to the expander-size, we can end up rendering icons
rather fuzzy. This uses the expander-size style property to determine
the square for the icon, centered on what was the calculated space for
the expander.
-rw-r--r-- | gtk/gtktreeview.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 758e3e2168..44ae4fad91 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -10296,11 +10296,13 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view, gint x2; gint vertical_separator; GtkCellRendererState flags = 0; + gint expander_size; widget = GTK_WIDGET (tree_view); context = gtk_widget_get_style_context (widget); gtk_widget_style_get (widget, + "expander-size", &expander_size, "vertical-separator", &vertical_separator, NULL); @@ -10335,6 +10337,21 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view, gtk_style_context_set_state (context, state); gtk_style_context_add_class (context, GTK_STYLE_CLASS_EXPANDER); + if (expander_size > 0) + { + if (expander_size < area.width && area.width % expander_size != 0) + { + area.x += (area.width % expander_size) / 2; + area.width = expander_size; + } + + if (expander_size < area.height && area.height % expander_size != 0) + { + area.y += (area.height % expander_size) / 2; + area.height = expander_size; + } + } + gtk_render_expander (context, cr, area.x, area.y, area.width, area.height); |