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>
|
2009-01-14 Federico Mena Quintero <federico@novell.com>
|
||||||
|
|
||||||
Remember the file chooser's geometry across invocations.
|
Remember the file chooser's geometry across invocations.
|
||||||
|
@ -1375,6 +1375,8 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
|||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
gboolean above;
|
gboolean above;
|
||||||
gint width;
|
gint width;
|
||||||
|
GtkTreeViewColumn *action_column;
|
||||||
|
gint action_height;
|
||||||
|
|
||||||
if (!completion->priv->entry->window)
|
if (!completion->priv->entry->window)
|
||||||
return FALSE;
|
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);
|
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);
|
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,
|
gtk_tree_view_column_cell_get_size (completion->priv->column, NULL,
|
||||||
NULL, NULL, NULL, &height);
|
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),
|
gtk_widget_style_get (GTK_WIDGET (completion->priv->tree_view),
|
||||||
"vertical-separator", &vertical_separator,
|
"vertical-separator", &vertical_separator,
|
||||||
@ -1404,9 +1409,9 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
|||||||
|
|
||||||
|
|
||||||
if (y > monitor.height / 2)
|
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
|
else
|
||||||
items = MIN (matches, (monitor.height - y) / height - 1 - actions);
|
items = MIN (matches, (((monitor.height - y) - (actions * action_height)) / height) - 1);
|
||||||
|
|
||||||
if (items <= 0)
|
if (items <= 0)
|
||||||
gtk_widget_hide (completion->priv->scrolled_window);
|
gtk_widget_hide (completion->priv->scrolled_window);
|
||||||
|
Reference in New Issue
Block a user