summaryrefslogtreecommitdiff
path: root/gtk/gtktreeviewcolumn.c
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2010-12-04 14:05:15 +0900
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2010-12-04 16:04:04 +0900
commitc8c5ed8fa1d20ee93c45324138f85da76e968f43 (patch)
tree59b51f7572c82f8b1094ed21948ea9b710d610db /gtk/gtktreeviewcolumn.c
parent0f4a2d322be507aaae8229f84bf80665901512d3 (diff)
downloadgtk+-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.c34
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;
+
}
/**