Fix incorporation dialog focus with master passphrase dialog.
[claws.git] / src / inc.c
index 254e52eb543a45557ffc8078f9df20f1e6aa170e..6344d22bbf71992eda57d7b0c6040c7b806def9a 100644 (file)
--- a/src/inc.c
+++ b/src/inc.c
@@ -59,6 +59,7 @@
 #include "log.h"
 #include "hooks.h"
 #include "logwindow.h"
+#include "passwordstore.h"
 
 extern SessionStats session_stats;
 
@@ -288,6 +289,8 @@ gint inc_account_mail(MainWindow *mainwin, PrefsAccount *account)
 
        if (inc_lock_count) return 0;
 
+       if (account->receive_in_progress) return 0;
+
        if (prefs_common.work_offline && 
            !inc_offline_should_override(TRUE,
                _("Claws Mail needs network access in order "
@@ -367,9 +370,11 @@ void inc_all_account_mail(MainWindow *mainwin, gboolean autocheck,
                PrefsAccount *account = list->data;
 
                if (account->recv_at_getall) {
-                       session = inc_session_new(account);
-                       if (session)
-                               queue_list = g_list_append(queue_list, session);
+                       if (!(account->receive_in_progress)) {
+                               session = inc_session_new(account);
+                               if (session)
+                                       queue_list = g_list_append(queue_list, session);
+                       }
                }
        }
 
@@ -565,37 +570,35 @@ static gint inc_start(IncProgressDialog *inc_dialog)
                pop3_session = POP3_SESSION(session->session); 
                pop3_session->user = g_strdup(pop3_session->ac_prefs->userid);
 
+               if (inc_dialog->show_dialog)
+                       manage_window_focus_in
+                               (inc_dialog->dialog->window,
+                                NULL, NULL);
+
                if (password_get(pop3_session->user,
                                        pop3_session->ac_prefs->recv_server,
                                        "pop3", pop3_get_port(pop3_session),
                                        &(pop3_session->pass))) {
                        /* NOP */;
-               } else if (pop3_session->ac_prefs->passwd)
-                       pop3_session->pass =
-                               g_strdup(pop3_session->ac_prefs->passwd);
-               else {
+               } else if ((pop3_session->pass = passwd_store_get_account(
+                                               pop3_session->ac_prefs->account_id, PWS_ACCOUNT_RECV)) == NULL) {
                        gchar *pass;
 
-                       if (inc_dialog->show_dialog)
-                               manage_window_focus_in
-                                       (inc_dialog->dialog->window,
-                                        NULL, NULL);
-
                        pass = input_dialog_query_password_keep
                                (pop3_session->ac_prefs->recv_server,
                                 pop3_session->user,
                                 &(pop3_session->ac_prefs->session_passwd));
 
-                       if (inc_dialog->show_dialog)
-                               manage_window_focus_out
-                                       (inc_dialog->dialog->window,
-                                        NULL, NULL);
-
                        if (pass) {
                                pop3_session->pass = pass;
                        }
                }
 
+               if (inc_dialog->show_dialog)
+                       manage_window_focus_out
+                               (inc_dialog->dialog->window,
+                                NULL, NULL);
+
                qlist = next;
        }
 
@@ -695,7 +698,7 @@ static gint inc_start(IncProgressDialog *inc_dialog)
                        inbox = folder_get_default_inbox();
 
                /* get list of messages in processing */
-               processing = folder_get_default_processing();
+               processing = folder_get_default_processing(pop3_session->ac_prefs->account_id);
                folder_item_scan(processing);
                msglist = folder_item_get_msg_list(processing);
 
@@ -712,8 +715,7 @@ static gint inc_start(IncProgressDialog *inc_dialog)
 
                for(msglist_element = msglist; msglist_element != NULL; 
                    msglist_element = msglist_element->next) {
-                       MsgInfo *msginfo = (MsgInfo *)msglist_element->data;
-                       procmsg_msginfo_free(msginfo);
+                       procmsg_msginfo_free((MsgInfo**)&(msglist_element->data));
                }
                folder_item_update_thaw();
                
@@ -1128,7 +1130,7 @@ static gint inc_drop_message(Pop3Session *session, const gchar *file)
        }
 
        /* CLAWS: claws uses a global .processing folder for the filtering. */
-       dropfolder = folder_get_default_processing();
+       dropfolder = folder_get_default_processing(session->ac_prefs->account_id);
 
        /* add msg file to drop folder */
        if ((msgnum = folder_item_add_msg(
@@ -1454,14 +1456,12 @@ static void inc_autocheck_timer_set_interval(guint interval)
           the common preferences */
        if (prefs_common.autochk_newmail && autocheck_data
            && prefs_common.work_offline == FALSE) {
-#if GLIB_CHECK_VERSION(2,14,0)
                if (interval % 1000 == 0)
                        autocheck_timer =
                                g_timeout_add_seconds(interval/1000, inc_autocheck_func, autocheck_data);
                else
-#endif
-               autocheck_timer = g_timeout_add
-                       (interval, inc_autocheck_func, autocheck_data);
+                       autocheck_timer = g_timeout_add
+                               (interval, inc_autocheck_func, autocheck_data);
                debug_print("added timer = %d\n", autocheck_timer);
        }
 }