to call presence_chooser_entry_activate_cb(), this should be solved by a g_signal_connect_after() but it doesn't seem to work... as we have to extract evything from the model, we might as well tell the default handeler not to run..
Signed-off-by: Niv Sardi <[email protected]> --- libempathy-gtk/empathy-presence-chooser.c | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c index 7a2a52e..cdc665e 100644 --- a/libempathy-gtk/empathy-presence-chooser.c +++ b/libempathy-gtk/empathy-presence-chooser.c @@ -138,6 +138,8 @@ static void presence_chooser_set_state (McPresence const gchar *status); static void presence_chooser_custom_activate_cb (GtkWidget *item, gpointer user_data); +static void presence_chooser_entry_activate_cb (EmpathyPresenceChooser *self, + GtkEntry *entry); G_DEFINE_TYPE (EmpathyPresenceChooser, empathy_presence_chooser, GTK_TYPE_COMBO_BOX_ENTRY); @@ -172,6 +174,30 @@ empathy_chooser_setup_cell_layout (GtkCellLayout *layout) NULL); } +static gboolean +presence_chooser_completion_match_selected_cb (GtkEntryCompletion *widget, + GtkTreeModel *model, + GtkTreeIter *iter, + EmpathyPresenceChooser *self) +{ + gchar *status; + guint state; + EmpathyPresenceChooserPriv *priv = GET_PRIV (self); + GtkWidget *entry = gtk_bin_get_child (GTK_BIN (self)); + + gtk_tree_model_get (model, iter, + COL_STATE, &state, + COL_STATUS_TEXT, &status, + -1); + + gtk_entry_set_text (GTK_ENTRY (entry), status); + g_free (status); + + priv->state = state; + presence_chooser_entry_activate_cb (self, GTK_ENTRY (entry)); + return TRUE; +} + static void presence_chooser_create_model (EmpathyPresenceChooser *self) { @@ -259,6 +285,9 @@ presence_chooser_create_model (EmpathyPresenceChooser *self) gtk_entry_completion_set_text_column (completion, COL_STATUS_TEXT); gtk_entry_completion_set_inline_completion(completion, TRUE); + g_signal_connect (completion, "match-selected", + G_CALLBACK (presence_chooser_completion_match_selected_cb), self); + empathy_chooser_setup_cell_layout (GTK_CELL_LAYOUT (completion)); gtk_entry_set_completion (GTK_ENTRY (entry), completion); -- 1.6.3.1 _______________________________________________ telepathy mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/telepathy
