diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-05-10 19:10:27 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-05-10 19:10:27 +0000 |
commit | e6a343408e208db603ac3d8f08e207bfaa8e9321 (patch) | |
tree | 77edb1b2c331894c68a3be5e4c9e1260f73f510c /gtk/gtkentrycompletion.c | |
parent | 8dbc5110708b9ec3b0d0058e0f5c080c3d65a1a1 (diff) | |
download | gtk+-e6a343408e208db603ac3d8f08e207bfaa8e9321.tar.gz |
Set the entry in the default handler of the ::match-selected signal.
2004-05-10 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkentrycompletion.c (gtk_entry_completion_list_button_press):
Set the entry in the default handler of the ::match-selected signal.
(#137226)
Diffstat (limited to 'gtk/gtkentrycompletion.c')
-rw-r--r-- | gtk/gtkentrycompletion.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index 0edfe85d32..1d1ab74ea1 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -119,6 +119,9 @@ static void gtk_entry_completion_action_data_func (GtkTreeViewColumn GtkTreeIter *iter, gpointer data); +static gboolean gtk_entry_completion_match_selected (GtkEntryCompletion *completion, + GtkTreeModel *model, + GtkTreeIter *iter); static GObjectClass *parent_class = NULL; static guint entry_completion_signals[LAST_SIGNAL] = { 0 }; @@ -175,6 +178,8 @@ gtk_entry_completion_class_init (GtkEntryCompletionClass *klass) object_class->get_property = gtk_entry_completion_get_property; object_class->finalize = gtk_entry_completion_finalize; + klass->match_selected = gtk_entry_completion_match_selected; + /** * GtkEntryCompletion::match-selected: * @widget: the object which received the signal @@ -630,8 +635,8 @@ gtk_entry_completion_list_button_press (GtkWidget *widget, event->x, event->y, &path, NULL, NULL, NULL)) { - gboolean entry_set; GtkTreeIter iter; + gboolean entry_set; gtk_tree_model_get_iter (GTK_TREE_MODEL (completion->priv->filter_model), &iter, path); @@ -645,29 +650,8 @@ gtk_entry_completion_list_button_press (GtkWidget *widget, g_signal_handler_unblock (completion->priv->entry, completion->priv->changed_id); - if (!entry_set) - { - gchar *str = NULL; - - gtk_tree_model_get (GTK_TREE_MODEL (completion->priv->filter_model), - &iter, - completion->priv->text_column, &str, - -1); - - g_signal_handler_block (completion->priv->entry, - completion->priv->changed_id); - gtk_entry_set_text (GTK_ENTRY (completion->priv->entry), str); - g_signal_handler_unblock (completion->priv->entry, - completion->priv->changed_id); - - /* move cursor to the end */ - gtk_editable_set_position (GTK_EDITABLE (completion->priv->entry), - -1); - - g_free (str); - } - _gtk_entry_completion_popdown (completion); + return TRUE; } @@ -1227,3 +1211,21 @@ _gtk_entry_completion_popdown (GtkEntryCompletion *completion) gtk_widget_hide (completion->priv->popup_window); } + +static gboolean +gtk_entry_completion_match_selected (GtkEntryCompletion *completion, + GtkTreeModel *model, + GtkTreeIter *iter) +{ + gchar *str = NULL; + + gtk_tree_model_get (model, iter, completion->priv->text_column, &str, -1); + gtk_entry_set_text (GTK_ENTRY (completion->priv->entry), str); + + /* move cursor to the end */ + gtk_editable_set_position (GTK_EDITABLE (completion->priv->entry), -1); + + g_free (str); + + return TRUE; +} |