summaryrefslogtreecommitdiff
path: root/gtk/gtkentrycompletion.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-05-10 19:10:27 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-05-10 19:10:27 +0000
commite6a343408e208db603ac3d8f08e207bfaa8e9321 (patch)
tree77edb1b2c331894c68a3be5e4c9e1260f73f510c /gtk/gtkentrycompletion.c
parent8dbc5110708b9ec3b0d0058e0f5c080c3d65a1a1 (diff)
downloadgtk+-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.c48
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;
+}