Don't assume actions and results have equal height
This causes negative size requisitions when results are more than one line tall. * gtk/gtkentrycompletion.c: change the formula used to calculate the size of the completion popup. svn path=/trunk/; revision=22120
This commit is contained in:
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
2009-01-15 Diego Escalante Urrelo <diegoe@gnome.org>
|
||||
|
||||
Bug 562701 – GtkEntryCompletion popup sizes its rows wrong
|
||||
when they span for more than one line.
|
||||
|
||||
Don't assume actions and results have equal height, this causes
|
||||
negative size requisitions when results are more than one
|
||||
line tall.
|
||||
|
||||
* gtk/gtkentrycompletion.c: change the formula used to calculate
|
||||
the size of the completion popup.
|
||||
|
||||
2009-01-14 Federico Mena Quintero <federico@novell.com>
|
||||
|
||||
Remember the file chooser's geometry across invocations.
|
||||
|
@ -1375,6 +1375,8 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
||||
GtkTreePath *path;
|
||||
gboolean above;
|
||||
gint width;
|
||||
GtkTreeViewColumn *action_column;
|
||||
gint action_height;
|
||||
|
||||
if (!completion->priv->entry->window)
|
||||
return FALSE;
|
||||
@ -1384,9 +1386,12 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
||||
|
||||
matches = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->filter_model), NULL);
|
||||
actions = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->actions), NULL);
|
||||
action_column = gtk_tree_view_get_column (GTK_TREE_VIEW (completion->priv->action_view), 0);
|
||||
|
||||
gtk_tree_view_column_cell_get_size (completion->priv->column, NULL,
|
||||
NULL, NULL, NULL, &height);
|
||||
gtk_tree_view_column_cell_get_size (action_column, NULL,
|
||||
NULL, NULL, NULL, &action_height);
|
||||
|
||||
gtk_widget_style_get (GTK_WIDGET (completion->priv->tree_view),
|
||||
"vertical-separator", &vertical_separator,
|
||||
@ -1404,9 +1409,9 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
||||
|
||||
|
||||
if (y > monitor.height / 2)
|
||||
items = MIN (matches, (monitor.y + y) / height - actions);
|
||||
items = MIN (matches, (((monitor.y + y) - (actions * action_height)) / height) - 1);
|
||||
else
|
||||
items = MIN (matches, (monitor.height - y) / height - 1 - actions);
|
||||
items = MIN (matches, (((monitor.height - y) - (actions * action_height)) / height) - 1);
|
||||
|
||||
if (items <= 0)
|
||||
gtk_widget_hide (completion->priv->scrolled_window);
|
||||
|
Reference in New Issue
Block a user