diff options
author | Kristian Rietveld <kris@gtk.org> | 2003-11-17 22:02:21 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2003-11-17 22:02:21 +0000 |
commit | 18154a2ea475a1249d55cd3e23fbbd34cbb2cce9 (patch) | |
tree | 467b9b1e07150f541dab61464e874b20e07dc1a9 /gtk/gtkentrycompletion.c | |
parent | 2a9551f54e1751ca85ad981bc4dc514ec4196b2e (diff) | |
download | gtk+-18154a2ea475a1249d55cd3e23fbbd34cbb2cce9.tar.gz |
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).
Diffstat (limited to 'gtk/gtkentrycompletion.c')
-rw-r--r-- | gtk/gtkentrycompletion.c | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index a63277fb28..e131081ab7 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -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; - - if (GTK_WIDGET_MAPPED (completion->priv->popup_window)) - return; - - gtk_widget_show_all (completion->priv->vbox); + gint items, height, x_border, y_border; - 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); |