From 1c58ef8447abe335761f0a26b6a2e4ddb11dbf31 Mon Sep 17 00:00:00 2001 From: hiro Date: Wed, 4 Apr 2007 04:37:25 +0000 Subject: fixed stop button sensitivity, and cancel all. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1592 ee746299-78ed-0310-b773-934348b2243d --- ChangeLog | 5 +++++ ChangeLog.ja | 7 +++++++ src/inc.c | 37 +++++++++++++++++++++++++++++-------- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9535988f..50c5b359 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-04-04 + + * src/inc.c: inc_is_active(): also check for session queue. + inc_cancel_all(): really cancel all sessions. + 2007-04-03 * version 2.4.0beta7 diff --git a/ChangeLog.ja b/ChangeLog.ja index 56635f06..899ea30e 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,10 @@ +2007-04-04 + + * src/inc.c: inc_is_active(): セッションキューもチェックする + ようにした。 + inc_cancel_all(): 本当にすべてのセッションをキャンセルする + ようにした。 + 2007-04-03 * version 2.4.0beta7 diff --git a/src/inc.c b/src/inc.c index 78e47675..6e88799c 100644 --- a/src/inc.c +++ b/src/inc.c @@ -633,6 +633,11 @@ static gint inc_start(IncProgressDialog *inc_dialog) GList *next = qlist->next; session = qlist->data; + if (session->inc_state == INC_CANCEL) { + qlist = next; + continue; + } + pop3_session = POP3_SESSION(session->session); pop3_session->user = g_strdup(pop3_session->ac_prefs->userid); if (pop3_session->ac_prefs->passwd) @@ -680,7 +685,8 @@ static gint inc_start(IncProgressDialog *inc_dialog) session = inc_dialog->queue_list->data; pop3_session = POP3_SESSION(session->session); - if (pop3_session->pass == NULL) { + if (session->inc_state == INC_CANCEL || + pop3_session->pass == NULL) { SET_PIXMAP_AND_TEXT(ok_pixbuf, _("Cancelled")); inc_session_destroy(session); inc_dialog->queue_list = @@ -1347,9 +1353,10 @@ static void inc_put_error(IncState istate, const gchar *msg) } } -static void inc_cancel(IncProgressDialog *dialog) +static void inc_cancel(IncProgressDialog *dialog, gboolean cancel_all) { IncSession *session; + GList *list; g_return_if_fail(dialog != NULL); @@ -1358,16 +1365,30 @@ static void inc_cancel(IncProgressDialog *dialog) return; } - session = dialog->queue_list->data; - - session->inc_state = INC_CANCEL; + for (list = dialog->queue_list; list != NULL; list = list->next) { + session = list->data; + session->inc_state = INC_CANCEL; + if (!cancel_all) + break; + } log_message(_("Incorporation cancelled\n")); } gboolean inc_is_active(void) { - return (inc_dialog_list != NULL); + GList *cur; + + if (inc_dialog_list == NULL) + return FALSE; + + for (cur = inc_dialog_list; cur != NULL; cur = cur->next) { + IncProgressDialog *dialog = cur->data; + if (dialog->queue_list) + return TRUE; + } + + return FALSE; } void inc_cancel_all(void) @@ -1375,12 +1396,12 @@ void inc_cancel_all(void) GList *cur; for (cur = inc_dialog_list; cur != NULL; cur = cur->next) - inc_cancel((IncProgressDialog *)cur->data); + inc_cancel((IncProgressDialog *)cur->data, TRUE); } static void inc_cancel_cb(GtkWidget *widget, gpointer data) { - inc_cancel((IncProgressDialog *)data); + inc_cancel((IncProgressDialog *)data, FALSE); } static gint inc_dialog_delete_cb(GtkWidget *widget, GdkEventAny *event, -- cgit v1.2.3