EMailSession does not respect user settings on start
Running in offline had no meaning, a store connected to its server anyway.
This commit is contained in:
@ -1069,6 +1069,46 @@ mail_session_notify (GObject *object,
|
||||
g_object_notify (object, "junk-filter-name");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
mail_session_initialize_stores_idle (gpointer user_data)
|
||||
{
|
||||
EMailSession *session = user_data;
|
||||
EAccountList *account_list;
|
||||
EAccount *account;
|
||||
EIterator *iter;
|
||||
|
||||
g_return_val_if_fail (session != NULL, FALSE);
|
||||
|
||||
/* Load user-defined mail accounts. */
|
||||
account_list = session->priv->account_list;
|
||||
iter = e_list_get_iterator (E_LIST (account_list));
|
||||
|
||||
while (e_iterator_is_valid (iter)) {
|
||||
/* XXX EIterator misuses const. */
|
||||
account = (EAccount *) e_iterator_get (iter);
|
||||
|
||||
mail_session_add_by_account (session, account);
|
||||
|
||||
e_iterator_next (iter);
|
||||
}
|
||||
|
||||
g_object_unref (iter);
|
||||
|
||||
/* Initialize which account is default. */
|
||||
|
||||
account = e_get_default_account ();
|
||||
if (account != NULL) {
|
||||
CamelService *service;
|
||||
|
||||
service = camel_session_get_service (
|
||||
CAMEL_SESSION (session), account->uid);
|
||||
e_mail_account_store_set_default_service (
|
||||
session->priv->account_store, service);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
mail_session_constructed (GObject *object)
|
||||
{
|
||||
@ -1079,8 +1119,6 @@ mail_session_constructed (GObject *object)
|
||||
GList *list, *link;
|
||||
GSettings *settings;
|
||||
EAccountList *account_list;
|
||||
EIterator *iter;
|
||||
EAccount *account;
|
||||
gulong handler_id;
|
||||
|
||||
session = E_MAIL_SESSION (object);
|
||||
@ -1113,32 +1151,13 @@ mail_session_constructed (GObject *object)
|
||||
mail_session_add_local_store (session);
|
||||
mail_session_add_vfolder_store (session);
|
||||
|
||||
/* Load user-defined mail accounts. */
|
||||
|
||||
iter = e_list_get_iterator (E_LIST (account_list));
|
||||
|
||||
while (e_iterator_is_valid (iter)) {
|
||||
/* XXX EIterator misuses const. */
|
||||
account = (EAccount *) e_iterator_get (iter);
|
||||
|
||||
mail_session_add_by_account (session, account);
|
||||
|
||||
e_iterator_next (iter);
|
||||
}
|
||||
|
||||
g_object_unref (iter);
|
||||
|
||||
/* Initialize which account is default. */
|
||||
|
||||
account = e_get_default_account ();
|
||||
if (account != NULL) {
|
||||
CamelService *service;
|
||||
|
||||
service = camel_session_get_service (
|
||||
CAMEL_SESSION (session), account->uid);
|
||||
e_mail_account_store_set_default_service (
|
||||
session->priv->account_store, service);
|
||||
}
|
||||
/* Give it a chance to load user settings, they are not loaded yet.
|
||||
*
|
||||
* XXX Is this the case where hiding such natural things like loading
|
||||
* user setting into an EExtension strikes back and proves itself
|
||||
* being suboptimal?
|
||||
*/
|
||||
g_idle_add (mail_session_initialize_stores_idle, object);
|
||||
|
||||
/* Listen for account list updates. */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user