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:
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;