add _gtk_entry_completion_resize_popup.
Mon Nov 17 22:56:09 2003 Kristian Rietveld <kris@gtk.org> * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup. * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not mapped, else resize_popup. * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup), (_gtk_entry_completion_popup): moved all popup resizing code to _gtk_entry_completion_resize_popup, and show the window when there are more than zero items in the completion list again (sigh).
This commit is contained in:
committed by
Kristian Rietveld
parent
2a9551f54e
commit
18154a2ea4
@ -1029,20 +1029,12 @@ get_borders (GtkEntry *entry,
|
||||
}
|
||||
}
|
||||
|
||||
/* this function is a bit nasty */
|
||||
void
|
||||
_gtk_entry_completion_popup (GtkEntryCompletion *completion)
|
||||
/* some nasty size requisition */
|
||||
gint
|
||||
_gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
||||
{
|
||||
gint x, y, x_border, y_border;
|
||||
gint items;
|
||||
gint height;
|
||||
gint items, height, x_border, y_border;
|
||||
|
||||
if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
|
||||
return;
|
||||
|
||||
gtk_widget_show_all (completion->priv->vbox);
|
||||
|
||||
gdk_window_get_origin (completion->priv->entry->window, &x, &y);
|
||||
get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
|
||||
|
||||
items = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->filter_model), NULL);
|
||||
@ -1052,13 +1044,15 @@ _gtk_entry_completion_popup (GtkEntryCompletion *completion)
|
||||
gtk_tree_view_column_cell_get_size (completion->priv->column, NULL,
|
||||
NULL, NULL, NULL, &height);
|
||||
|
||||
if (items <= 0)
|
||||
gtk_widget_hide (completion->priv->scrolled_window);
|
||||
else
|
||||
gtk_widget_show (completion->priv->scrolled_window);
|
||||
|
||||
gtk_widget_set_size_request (completion->priv->tree_view,
|
||||
completion->priv->entry->allocation.width - 2 * x_border,
|
||||
items * height);
|
||||
|
||||
if (items <= 0)
|
||||
gtk_widget_hide (completion->priv->scrolled_window);
|
||||
|
||||
/* default on no match */
|
||||
completion->priv->current_selected = -1;
|
||||
|
||||
@ -1075,9 +1069,28 @@ _gtk_entry_completion_popup (GtkEntryCompletion *completion)
|
||||
items * height);
|
||||
}
|
||||
|
||||
return height;
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_entry_completion_popup (GtkEntryCompletion *completion)
|
||||
{
|
||||
gint x, y, x_border, y_border;
|
||||
gint height;
|
||||
|
||||
if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
|
||||
return;
|
||||
|
||||
gtk_widget_show_all (completion->priv->vbox);
|
||||
|
||||
gdk_window_get_origin (completion->priv->entry->window, &x, &y);
|
||||
get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
|
||||
|
||||
x += x_border;
|
||||
y += 2 * y_border;
|
||||
|
||||
height = _gtk_entry_completion_resize_popup (completion);
|
||||
|
||||
gtk_window_move (GTK_WINDOW (completion->priv->popup_window), x, y + height);
|
||||
|
||||
gtk_widget_show (completion->priv->popup_window);
|
||||
|
||||
Reference in New Issue
Block a user