summaryrefslogtreecommitdiff
path: root/gtk/gtkentrycompletion.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2003-11-17 22:02:21 +0000
committerKristian Rietveld <kristian@src.gnome.org>2003-11-17 22:02:21 +0000
commit18154a2ea475a1249d55cd3e23fbbd34cbb2cce9 (patch)
tree467b9b1e07150f541dab61464e874b20e07dc1a9 /gtk/gtkentrycompletion.c
parent2a9551f54e1751ca85ad981bc4dc514ec4196b2e (diff)
downloadgtk+-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.c43
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);