diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-06-15 03:30:14 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-06-15 03:30:14 +0800 |
commit | 1276d2a9b42398e7ec978efc24e99aa6cd31e631 (patch) | |
tree | e8791bf991746ff039fea17b760946df5f4a53f6 /widgets/misc/e-account-combo-box.c | |
parent | b22733cf3d127f3ce67547da0c6f4841e623251c (diff) | |
download | gsoc2013-evolution-1276d2a9b42398e7ec978efc24e99aa6cd31e631.tar.gz gsoc2013-evolution-1276d2a9b42398e7ec978efc24e99aa6cd31e631.tar.zst gsoc2013-evolution-1276d2a9b42398e7ec978efc24e99aa6cd31e631.zip |
Bug 584902 – Disabled default account hides "From" in composer
Diffstat (limited to 'widgets/misc/e-account-combo-box.c')
-rw-r--r-- | widgets/misc/e-account-combo-box.c | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/widgets/misc/e-account-combo-box.c b/widgets/misc/e-account-combo-box.c index 7663f0faee..a0d02bcd80 100644 --- a/widgets/misc/e-account-combo-box.c +++ b/widgets/misc/e-account-combo-box.c @@ -64,6 +64,44 @@ account_combo_box_has_dupes (GList *list, return (count > 1); } +static EAccount * +account_combo_box_choose_account (EAccountComboBox *combo_box) +{ + EAccountList *account_list; + EAccount *account; + GtkTreeModel *model; + GtkTreeIter iter; + + account_list = e_account_combo_box_get_account_list (combo_box); + g_return_val_if_fail (account_list != NULL, NULL); + + /* First try the default account. */ + + /* XXX EAccountList misuses const. */ + account = (EAccount *) + e_account_list_get_default (account_list); + + /* If there is no default account, give up. */ + if (account == NULL) + return NULL; + + /* Make sure the default account appears in the combo box. */ + if (g_hash_table_lookup (combo_box->priv->index, account) != NULL) + return account; + + /* Default account is disabled or otherwise unusable, + * so fall back to the first account in the combo box. */ + + model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box)); + + if (!gtk_tree_model_get_iter_first (model, &iter)) + return NULL; + + gtk_tree_model_get (model, &iter, COLUMN_ACCOUNT, &account, -1); + + return account; +} + static gboolean account_combo_box_test_account (EAccount *account) { @@ -416,11 +454,12 @@ e_account_combo_box_set_active (EAccountComboBox *combo_box, account_list = combo_box->priv->account_list; g_return_val_if_fail (account_list != NULL, FALSE); - /* NULL means select the default account. */ - /* XXX EAccountList misuses const. */ + /* NULL means choose an account ourselves. */ if (account == NULL) - account = (EAccount *) - e_account_list_get_default (account_list); + account = account_combo_box_choose_account (combo_box); + + if (account == NULL) + return FALSE; /* Lookup the tree row reference for the account. */ reference = g_hash_table_lookup (combo_box->priv->index, account); |