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)
+
* gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't
do the move-selected-item below pointer thingie, do the
place-below-or-above one.
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)
+
* gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't
do the move-selected-item below pointer thingie, do the
place-below-or-above one.
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)
+
* gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't
do the move-selected-item below pointer thingie, do the
place-below-or-above one.
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)
+
* gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't
do the move-selected-item below pointer thingie, do the
place-below-or-above one.
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 };
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
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);
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;
}
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;
+}