talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 7d646b5253d1df84ee35deab55d0668db558951f
parent fa053203cd6f04304e0836ae3451ed970b0c1266
Author: Oliver Lowe <o@olowe.co>
Date:   Sun, 31 Aug 2025 13:21:38 +1000

Delete low bandwidth mode

Bandwidth isn't an issue, latency is

Diffstat:
Msrc/account.c | 1-
Msrc/imap.c | 188++++++++-----------------------------------------------------------------------
Msrc/prefs_account.c | 19-------------------
Msrc/prefs_account.h | 5+----
4 files changed, 18 insertions(+), 195 deletions(-)

diff --git a/src/account.c b/src/account.c @@ -1010,7 +1010,6 @@ static void account_clone(GtkWidget *widget, gpointer data) ACP_FDUP(imap_dir); ACP_FASSIGN(imap_subsonly); - ACP_FASSIGN(low_bandwidth); ACP_FASSIGN(set_sent_folder); ACP_FDUP(sent_folder); diff --git a/src/imap.c b/src/imap.c @@ -4402,11 +4402,6 @@ static gint get_list_of_uids(IMAPSession *session, Folder *folder, IMAPFolderIte uidlist = NULL; - if (folder->account && folder->account->low_bandwidth) { - r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_SIMPLE, - NULL, NULL, NULL, &lep_uidlist); - } - if (r == MAILIMAP_NO_ERROR) { uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); mailimap_search_result_free(lep_uidlist); @@ -5038,122 +5033,15 @@ static /*gint*/ void *imap_get_flags_thread(void *data) seq_list = g_slist_append(NULL, set); } - if (folder->account && folder->account->low_bandwidth) { - for (cur = seq_list; cur != NULL; cur = g_slist_next(cur)) { - struct mailimap_set * imapset; - clist * lep_uidlist; - int r; - - imapset = cur->data; - if (reverse_seen) { - r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_SEEN, NULL, - NULL, full_search ? NULL:imapset, &lep_uidlist); - } - else { - r = imap_threaded_search(folder, - IMAP_SEARCH_TYPE_UNSEEN, NULL, - NULL, full_search ? NULL:imapset, &lep_uidlist); - } - if (r == MAILIMAP_NO_ERROR) { - GSList * uidlist; - - uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); - mailimap_search_result_free(lep_uidlist); - - unseen = g_slist_concat(unseen, uidlist); - } else { - imap_handle_error(SESSION(session), NULL, r); - goto bail; - } - - r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_FLAGGED, NULL, - NULL, full_search ? NULL:imapset, &lep_uidlist); - if (r == MAILIMAP_NO_ERROR) { - GSList * uidlist; - - uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); - mailimap_search_result_free(lep_uidlist); - - flagged = g_slist_concat(flagged, uidlist); - } else { - imap_handle_error(SESSION(session), NULL, r); - goto bail; - } - - if (fitem->opened || fitem->processing_pending || fitem == folder->inbox) { - r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_ANSWERED, NULL, - NULL, full_search ? NULL:imapset, &lep_uidlist); - if (r == MAILIMAP_NO_ERROR) { - GSList * uidlist; - - uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); - mailimap_search_result_free(lep_uidlist); - - answered = g_slist_concat(answered, uidlist); - } else { - imap_handle_error(SESSION(session), NULL, r); - goto bail; - } - - if (flag_ok(IMAP_FOLDER_ITEM(fitem), IMAP_FLAG_FORWARDED)) { - r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_FORWARDED, NULL, - NULL, full_search ? NULL:imapset, &lep_uidlist); - if (r == MAILIMAP_NO_ERROR) { - GSList * uidlist; - - uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); - mailimap_search_result_free(lep_uidlist); - - forwarded = g_slist_concat(forwarded, uidlist); - } else { - imap_handle_error(SESSION(session), NULL, r); - goto bail; - } - } - - if (flag_ok(IMAP_FOLDER_ITEM(fitem), IMAP_FLAG_SPAM)) { - r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_SPAM, NULL, - NULL, full_search ? NULL:imapset, &lep_uidlist); - if (r == MAILIMAP_NO_ERROR) { - GSList * uidlist; - - uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); - mailimap_search_result_free(lep_uidlist); - - spam = g_slist_concat(spam, uidlist); - } else { - imap_handle_error(SESSION(session), NULL, r); - goto bail; - } - } - - r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_DELETED, NULL, - NULL, full_search ? NULL:imapset, &lep_uidlist); - if (r == MAILIMAP_NO_ERROR) { - GSList * uidlist; - - uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); - mailimap_search_result_free(lep_uidlist); - - deleted = g_slist_concat(deleted, uidlist); - } else { - imap_handle_error(SESSION(session), NULL, r); - goto bail; - } - } - } - + r = imap_threaded_fetch_uid_flags(folder, 1, &lep_uidtab); + if (r == MAILIMAP_NO_ERROR) { + flags_hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL); + tags_hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL); + imap_flags_hash_from_lep_uid_flags_tab(lep_uidtab, flags_hash, tags_hash); + imap_fetch_uid_flags_list_free(lep_uidtab); } else { - r = imap_threaded_fetch_uid_flags(folder, 1, &lep_uidtab); - if (r == MAILIMAP_NO_ERROR) { - flags_hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL); - tags_hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL); - imap_flags_hash_from_lep_uid_flags_tab(lep_uidtab, flags_hash, tags_hash); - imap_fetch_uid_flags_list_free(lep_uidtab); - } else { - imap_handle_error(SESSION(session), NULL, r); - goto bail; - } + imap_handle_error(SESSION(session), NULL, r); + goto bail; } bail: @@ -5170,59 +5058,17 @@ bail: wasnew = (flags & MSG_NEW); oldflags = flags & ~(MSG_NEW|MSG_UNREAD|MSG_REPLIED|MSG_FORWARDED|MSG_MARKED|MSG_DELETED|MSG_SPAM); - if (folder->account && folder->account->low_bandwidth) { - if (fitem->opened || fitem->processing_pending || fitem == folder->inbox) { - flags &= ~((reverse_seen ? 0 : MSG_UNREAD | MSG_NEW) | MSG_REPLIED | MSG_FORWARDED | MSG_MARKED | MSG_SPAM); - } else { - flags &= ~((reverse_seen ? 0 : MSG_UNREAD | MSG_NEW | MSG_MARKED)); - } - if (reverse_seen) - flags |= MSG_UNREAD | (wasnew ? MSG_NEW : 0); - if (gslist_find_next_num(&unseen, msginfo->msgnum) == msginfo->msgnum) { - if (!reverse_seen) { - flags |= MSG_UNREAD | (wasnew ? MSG_NEW : 0); - } else { - flags &= ~(MSG_UNREAD | MSG_NEW); - } - } - - if (gslist_find_next_num(&flagged, msginfo->msgnum) == msginfo->msgnum) - flags |= MSG_MARKED; - else - flags &= ~MSG_MARKED; - - if (fitem->opened || fitem->processing_pending || fitem == folder->inbox) { - if (gslist_find_next_num(&answered, msginfo->msgnum) == msginfo->msgnum) - flags |= MSG_REPLIED; - else - flags &= ~MSG_REPLIED; - if (gslist_find_next_num(&forwarded, msginfo->msgnum) == msginfo->msgnum) - flags |= MSG_FORWARDED; - else - flags &= ~MSG_FORWARDED; - if (gslist_find_next_num(&spam, msginfo->msgnum) == msginfo->msgnum) - flags |= MSG_SPAM; - else - flags &= ~MSG_SPAM; - if (gslist_find_next_num(&deleted, msginfo->msgnum) == msginfo->msgnum) - flags |= MSG_DELETED; - else - flags &= ~MSG_DELETED; - } - } else { - if (flags_hash != NULL) { - - flags = GPOINTER_TO_INT(g_hash_table_lookup(flags_hash, - GINT_TO_POINTER(msginfo->msgnum))); - } - - if ((flags & MSG_UNREAD) == 0) - flags &= ~MSG_NEW; - else if (wasnew) - flags |= MSG_NEW; - flags |= oldflags; + if (flags_hash != NULL) { + flags = GPOINTER_TO_INT(g_hash_table_lookup(flags_hash, + GINT_TO_POINTER(msginfo->msgnum))); } + if ((flags & MSG_UNREAD) == 0) + flags &= ~MSG_NEW; + else if (wasnew) + flags |= MSG_NEW; + flags |= oldflags; + g_hash_table_insert(msgflags, msginfo, GINT_TO_POINTER(flags)); } diff --git a/src/prefs_account.c b/src/prefs_account.c @@ -169,7 +169,6 @@ typedef struct ReceivePage GtkWidget *imapdir_label; GtkWidget *imapdir_entry; GtkWidget *subsonly_checkbtn; - GtkWidget *low_bandwidth_checkbtn; GtkWidget *imap_batch_size_spinbtn; GtkWidget *autochk_checkbtn; @@ -453,9 +452,6 @@ static PrefParam basic_param[] = { }; static PrefParam receive_param[] = { - {"use_apop_auth", "FALSE", &tmp_ac_prefs.use_apop_auth, P_BOOL, - NULL, NULL}, /* deprecated */ - {"use_pop_auth", "FALSE", &tmp_ac_prefs.use_pop_auth, P_BOOL, &receive_page.pop_auth_checkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, @@ -498,10 +494,6 @@ static PrefParam receive_param[] = { &receive_page.subsonly_checkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, - {"low_bandwidth", "FALSE", &tmp_ac_prefs.low_bandwidth, P_BOOL, - &receive_page.low_bandwidth_checkbtn, - prefs_set_data_from_toggle, prefs_set_toggle}, - {"imap_batch_size", "500", &tmp_ac_prefs.imap_batch_size, P_INT, &receive_page.imap_batch_size_spinbtn, prefs_set_data_from_spinbtn, prefs_set_spinbtn}, @@ -1294,7 +1286,6 @@ static void receive_create_widget_func(PrefsPage * _page, GtkWidget *imapdir_label; GtkWidget *imapdir_entry; GtkWidget *subsonly_checkbtn; - GtkWidget *low_bandwidth_checkbtn; GtkWidget *imap_batch_size_spinbtn; GtkWidget *local_frame; GtkWidget *local_vbox; @@ -1507,11 +1498,6 @@ static void receive_create_widget_func(PrefsPage * _page, gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 4); - PACK_CHECK_BUTTON (hbox1, low_bandwidth_checkbtn, - _("Bandwidth-efficient mode (prevents retrieving remote tags)")); - CLAWS_SET_TIP(low_bandwidth_checkbtn, - _("This mode uses less bandwidth, but can be slower with some servers.")); - hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 4); @@ -1609,7 +1595,6 @@ static void receive_create_widget_func(PrefsPage * _page, page->imapdir_label = imapdir_label; page->imapdir_entry = imapdir_entry; page->subsonly_checkbtn = subsonly_checkbtn; - page->low_bandwidth_checkbtn = low_bandwidth_checkbtn; page->imap_batch_size_spinbtn = imap_batch_size_spinbtn; page->local_frame = local_frame; page->local_inbox_label = local_inbox_label; @@ -4712,7 +4697,6 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(receive_page.imapdir_label); gtk_widget_hide(receive_page.imapdir_entry); gtk_widget_hide(receive_page.subsonly_checkbtn); - gtk_widget_hide(receive_page.low_bandwidth_checkbtn); gtk_widget_hide(receive_page.imap_batch_size_spinbtn); break; case A_IMAP4: @@ -4776,7 +4760,6 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_show(receive_page.imapdir_label); gtk_widget_show(receive_page.imapdir_entry); gtk_widget_show(receive_page.subsonly_checkbtn); - gtk_widget_show(receive_page.low_bandwidth_checkbtn); gtk_widget_show(receive_page.imap_batch_size_spinbtn); break; case A_NONE: @@ -4835,7 +4818,6 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(receive_page.imapdir_label); gtk_widget_hide(receive_page.imapdir_entry); gtk_widget_hide(receive_page.subsonly_checkbtn); - gtk_widget_hide(receive_page.low_bandwidth_checkbtn); gtk_widget_hide(receive_page.imap_batch_size_spinbtn); break; case A_POP3: @@ -4899,7 +4881,6 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(receive_page.imapdir_label); gtk_widget_hide(receive_page.imapdir_entry); gtk_widget_hide(receive_page.subsonly_checkbtn); - gtk_widget_hide(receive_page.low_bandwidth_checkbtn); gtk_widget_hide(receive_page.imap_batch_size_spinbtn); break; } diff --git a/src/prefs_account.h b/src/prefs_account.h @@ -90,8 +90,7 @@ struct _PrefsAccount /* Receive */ gboolean use_pop_auth; - POPAuthType pop_auth_type; - gboolean use_apop_auth; /* deprecated */ + POPAuthType pop_auth_type; gboolean rmmail; gint msg_leave_time; gint msg_leave_hour; @@ -189,7 +188,6 @@ struct _PrefsAccount gchar *imap_dir; gboolean imap_subsonly; - gboolean low_bandwidth; gboolean set_sent_folder; gchar *sent_folder; @@ -200,7 +198,6 @@ struct _PrefsAccount gboolean set_trash_folder; gchar *trash_folder; - /* Default or not */ gboolean is_default; /* Unique account ID */ gint account_id;