From 720873b9cc38f0bc9b77647684c0c52cbe4ed664 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Wed, 19 Nov 2003 21:26:27 +0000 Subject: [PATCH] always resize the popup when it is visible, popdown when there are less Wed Nov 19 22:15:01 2003 Kristian Rietveld * gtk/gtkentry.c (gtk_entry_completion_timeout): always resize the popup when it is visible, popdown when there are less chars than the minimum key length in the entry, (gtk_entry_completion_changed): popdown when the entry is empty. * gtk/gtkentrycompletion.c (gtk_entry_completion_init): set the size request of the vscrollbar to (-1, 0), to get a nicely sized completion treeview (Fixes #126573, reported by Piers Cornwell), (_gtk_entry_completion_resize_popup): show/hide the action_view based on items. --- ChangeLog | 13 +++++++++++++ ChangeLog.pre-2-10 | 13 +++++++++++++ ChangeLog.pre-2-4 | 13 +++++++++++++ ChangeLog.pre-2-6 | 13 +++++++++++++ ChangeLog.pre-2-8 | 13 +++++++++++++ gtk/gtkentry.c | 20 ++++++++++++-------- gtk/gtkentrycompletion.c | 6 ++++++ 7 files changed, 83 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index c18a4850d8..b63d14a88a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Wed Nov 19 22:15:01 2003 Kristian Rietveld + + * gtk/gtkentry.c (gtk_entry_completion_timeout): always resize + the popup when it is visible, popdown when there are less chars + than the minimum key length in the entry, + (gtk_entry_completion_changed): popdown when the entry is empty. + + * gtk/gtkentrycompletion.c (gtk_entry_completion_init): set the + size request of the vscrollbar to (-1, 0), to get a nicely sized + completion treeview (Fixes #126573, reported by Piers Cornwell), + (_gtk_entry_completion_resize_popup): show/hide the action_view + based on items. + 2003-11-19 Federico Mena Quintero * gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_init): Turn diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index c18a4850d8..b63d14a88a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,16 @@ +Wed Nov 19 22:15:01 2003 Kristian Rietveld + + * gtk/gtkentry.c (gtk_entry_completion_timeout): always resize + the popup when it is visible, popdown when there are less chars + than the minimum key length in the entry, + (gtk_entry_completion_changed): popdown when the entry is empty. + + * gtk/gtkentrycompletion.c (gtk_entry_completion_init): set the + size request of the vscrollbar to (-1, 0), to get a nicely sized + completion treeview (Fixes #126573, reported by Piers Cornwell), + (_gtk_entry_completion_resize_popup): show/hide the action_view + based on items. + 2003-11-19 Federico Mena Quintero * gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_init): Turn diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index c18a4850d8..b63d14a88a 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,16 @@ +Wed Nov 19 22:15:01 2003 Kristian Rietveld + + * gtk/gtkentry.c (gtk_entry_completion_timeout): always resize + the popup when it is visible, popdown when there are less chars + than the minimum key length in the entry, + (gtk_entry_completion_changed): popdown when the entry is empty. + + * gtk/gtkentrycompletion.c (gtk_entry_completion_init): set the + size request of the vscrollbar to (-1, 0), to get a nicely sized + completion treeview (Fixes #126573, reported by Piers Cornwell), + (_gtk_entry_completion_resize_popup): show/hide the action_view + based on items. + 2003-11-19 Federico Mena Quintero * gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_init): Turn diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index c18a4850d8..b63d14a88a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,16 @@ +Wed Nov 19 22:15:01 2003 Kristian Rietveld + + * gtk/gtkentry.c (gtk_entry_completion_timeout): always resize + the popup when it is visible, popdown when there are less chars + than the minimum key length in the entry, + (gtk_entry_completion_changed): popdown when the entry is empty. + + * gtk/gtkentrycompletion.c (gtk_entry_completion_init): set the + size request of the vscrollbar to (-1, 0), to get a nicely sized + completion treeview (Fixes #126573, reported by Piers Cornwell), + (_gtk_entry_completion_resize_popup): show/hide the action_view + based on items. + 2003-11-19 Federico Mena Quintero * gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_init): Turn diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index c18a4850d8..b63d14a88a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,16 @@ +Wed Nov 19 22:15:01 2003 Kristian Rietveld + + * gtk/gtkentry.c (gtk_entry_completion_timeout): always resize + the popup when it is visible, popdown when there are less chars + than the minimum key length in the entry, + (gtk_entry_completion_changed): popdown when the entry is empty. + + * gtk/gtkentrycompletion.c (gtk_entry_completion_init): set the + size request of the vscrollbar to (-1, 0), to get a nicely sized + completion treeview (Fixes #126573, reported by Piers Cornwell), + (_gtk_entry_completion_resize_popup): show/hide the action_view + based on items. + 2003-11-19 Federico Mena Quintero * gtk/gtkfilechooserdialog.c (gtk_file_chooser_dialog_init): Turn diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 8f97dcf594..b4dae1f31c 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -4514,14 +4514,14 @@ gtk_entry_completion_timeout (gpointer data) actions = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->actions), NULL); - if (matches > 0 || actions > 0) - { - if (! GTK_WIDGET_MAPPED (completion->priv->popup_window)) - _gtk_entry_completion_popup (completion); - else - _gtk_entry_completion_resize_popup (completion); - } + if ((matches > 0 || actions > 0) + && ! GTK_WIDGET_VISIBLE (completion->priv->popup_window)) + _gtk_entry_completion_popup (completion); + else if (GTK_WIDGET_VISIBLE (completion->priv->popup_window)) + _gtk_entry_completion_resize_popup (completion); } + else if (GTK_WIDGET_VISIBLE (completion->priv->popup_window)) + _gtk_entry_completion_popdown (completion); GDK_THREADS_LEAVE (); @@ -4682,7 +4682,11 @@ gtk_entry_completion_changed (GtkWidget *entry, /* no need to normalize for this test */ if (! strcmp ("", gtk_entry_get_text (GTK_ENTRY (entry)))) - return; + { + if (GTK_WIDGET_VISIBLE (completion->priv->popup_window)) + _gtk_entry_completion_popdown (completion); + return; + } completion->priv->completion_timeout = g_timeout_add (COMPLETION_TIMEOUT, diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index 2dc0896b27..de8664e520 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -258,6 +258,8 @@ gtk_entry_completion_init (GtkEntryCompletion *completion) gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->scrolled_window), GTK_SHADOW_ETCHED_IN); + /* a nasty hack to get the completions treeview to size nicely */ + gtk_widget_set_size_request (GTK_SCROLLED_WINDOW (priv->scrolled_window)->vscrollbar, -1, 0); /* actions */ priv->actions = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); @@ -1061,6 +1063,8 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion) if (items) { + gtk_widget_show (completion->priv->action_view); + gtk_tree_view_column_cell_get_size (gtk_tree_view_get_column (GTK_TREE_VIEW (completion->priv->action_view), 0), NULL, NULL, NULL, NULL, &height); @@ -1069,6 +1073,8 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion) completion->priv->entry->allocation.width - 2 * x_border, items * height); } + else + gtk_widget_hide (completion->priv->action_view); return height; }