diff options
author | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2010-12-04 14:05:15 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2010-12-04 16:04:04 +0900 |
commit | c8c5ed8fa1d20ee93c45324138f85da76e968f43 (patch) | |
tree | 59b51f7572c82f8b1094ed21948ea9b710d610db /gtk/gtktreeviewcolumn.c | |
parent | 0f4a2d322be507aaae8229f84bf80665901512d3 (diff) | |
download | gtk+-c8c5ed8fa1d20ee93c45324138f85da76e968f43.tar.gz |
Removing hack and fixing gtk_tree_view_column_cell_get_size().
Now consult gtk_cell_area_context_get_preferred_height().
It can be that height-for-widths requested here were too large
when multiple cells are in play because of the alignments stored
in the context... removing the temporary focus-line-width hack.
Diffstat (limited to 'gtk/gtktreeviewcolumn.c')
-rw-r--r-- | gtk/gtktreeviewcolumn.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index effd8a362b..ed3ac9657b 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -2473,44 +2473,36 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column, gint *width, gint *height) { - int focus_line_width; + gint min_width = 0, min_height = 0; g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - if (height) - * height = 0; - if (width) - * width = 0; - - /* FIXME: This is a temporary hack to get things to allocate mostly right. - * - * We will add twice the focus-line-width to the for-width - * parameter below. If we do not do this, the height returned is the - * height for two lines of text instead of one. It feels like some lines - * get less width than expected (due to subtraction of focus_line_width?) - * and will unnecessarily wrap. - */ - gtk_widget_style_get (tree_column->tree_view, - "focus-line-width", &focus_line_width, - NULL); - g_signal_handler_block (tree_column->cell_area_context, tree_column->context_changed_signal); gtk_cell_area_get_preferred_width (tree_column->cell_area, tree_column->cell_area_context, tree_column->tree_view, - width, NULL); + NULL, NULL); + + gtk_cell_area_context_get_preferred_width (tree_column->cell_area_context, &min_width, NULL); + gtk_cell_area_get_preferred_height_for_width (tree_column->cell_area, tree_column->cell_area_context, tree_column->tree_view, - *width + focus_line_width * 2, - height, + min_width, + &min_height, NULL); g_signal_handler_unblock (tree_column->cell_area_context, tree_column->context_changed_signal); + + if (height) + * height = min_height; + if (width) + * width = min_width; + } /** |