]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-account-chooser.c
Merge commit 'upstream/master' into mc5
[empathy.git] / libempathy-gtk / empathy-account-chooser.c
index fa05bbcc95ef708ada71525575299df3d4e32b85..7c6f52fa52c1c673d7c41a8a33420b6c47caa2c1 100644 (file)
@@ -56,6 +56,7 @@
 typedef struct {
        EmpathyAccountManager          *manager;
        gboolean                        set_active_item;
+       gboolean                        account_manually_set;
        gboolean                        has_all_option;
        EmpathyAccountChooserFilterFunc filter;
        gpointer                        filter_data;
@@ -151,6 +152,7 @@ empathy_account_chooser_init (EmpathyAccountChooser *chooser)
 
        chooser->priv = priv;
        priv->set_active_item = FALSE;
+       priv->account_manually_set = FALSE;
        priv->filter = NULL;
        priv->filter_data = NULL;
 
@@ -320,6 +322,7 @@ gboolean
 empathy_account_chooser_set_account (EmpathyAccountChooser *chooser,
                                     EmpathyAccount *account)
 {
+       EmpathyAccountChooserPriv *priv;
        GtkComboBox    *combobox;
        GtkTreeModel   *model;
        GtkTreeIter     iter;
@@ -327,6 +330,8 @@ empathy_account_chooser_set_account (EmpathyAccountChooser *chooser,
 
        g_return_val_if_fail (EMPATHY_IS_ACCOUNT_CHOOSER (chooser), FALSE);
 
+       priv = GET_PRIV (chooser);
+
        combobox = GTK_COMBO_BOX (chooser);
        model = gtk_combo_box_get_model (combobox);
        gtk_combo_box_get_active_iter (combobox, &iter);
@@ -338,6 +343,8 @@ empathy_account_chooser_set_account (EmpathyAccountChooser *chooser,
                                (GtkTreeModelForeachFunc) account_chooser_set_account_foreach,
                                &data);
 
+       priv->account_manually_set = data.set;
+
        return data.set;
 }
 
@@ -620,7 +627,8 @@ account_chooser_update_iter (EmpathyAccountChooser *chooser,
                            -1);
 
        /* set first connected account as active account */
-       if (priv->set_active_item == FALSE && is_enabled) {
+       if (priv->account_manually_set == FALSE &&
+           priv->set_active_item == FALSE && is_enabled) {
                priv->set_active_item = TRUE;
                gtk_combo_box_set_active_iter (combobox, iter);
        }