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

Reply via email to