* src/imap.c
Fix previous commit. Sensitivity update is needed
for "Cancel receiving". However when batching we
don't need to do it for every message flag change,
just once at the start and once at the end.
+2007-08-19 [colin] 2.10.0cvs135
+
+ * src/imap.c
+ Fix previous commit. Sensitivity update is needed
+ for "Cancel receiving". However when batching we
+ don't need to do it for every message flag change,
+ just once at the start and once at the end.
+
2007-08-19 [colin] 2.10.0cvs134
* src/imap.c
2007-08-19 [colin] 2.10.0cvs134
* src/imap.c
( cvs diff -u -r 1.26.2.33 -r 1.26.2.34 src/foldersel.c; cvs diff -u -r 1.207.2.174 -r 1.207.2.175 src/folderview.c; cvs diff -u -r 1.395.2.320 -r 1.395.2.321 src/summaryview.c; ) > 2.10.0cvs132.patchset
( cvs diff -u -r 1.1.4.82 -r 1.1.4.83 src/etpan/imap-thread.c; ) > 2.10.0cvs133.patchset
( cvs diff -u -r 1.179.2.181 -r 1.179.2.182 src/imap.c; ) > 2.10.0cvs134.patchset
( cvs diff -u -r 1.26.2.33 -r 1.26.2.34 src/foldersel.c; cvs diff -u -r 1.207.2.174 -r 1.207.2.175 src/folderview.c; cvs diff -u -r 1.395.2.320 -r 1.395.2.321 src/summaryview.c; ) > 2.10.0cvs132.patchset
( cvs diff -u -r 1.1.4.82 -r 1.1.4.83 src/etpan/imap-thread.c; ) > 2.10.0cvs133.patchset
( cvs diff -u -r 1.179.2.181 -r 1.179.2.182 src/imap.c; ) > 2.10.0cvs134.patchset
+( cvs diff -u -r 1.179.2.182 -r 1.179.2.183 src/imap.c; ) > 2.10.0cvs135.patchset
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
Folder * folder;
gboolean busy;
gboolean cancelled;
Folder * folder;
gboolean busy;
gboolean cancelled;
+ gboolean sens_update_block;
+static void imap_refresh_sensitivity (IMAPSession *session)
+{
+ MainWindow *mainwin;
+
+ if (session->sens_update_block)
+ return;
+ mainwin = mainwindow_get_mainwindow();
+ if (mainwin) {
+ toolbar_main_set_sensitive(mainwin);
+ main_window_set_menu_sensitive(mainwin);
+ }
+}
+
static void lock_session(IMAPSession *session)
{
if (session) {
static void lock_session(IMAPSession *session)
{
if (session) {
debug_print("locking session %p (%d)\n", session, session->busy);
if (session->busy)
debug_print(" SESSION WAS LOCKED !! \n");
session->busy = TRUE;
debug_print("locking session %p (%d)\n", session, session->busy);
if (session->busy)
debug_print(" SESSION WAS LOCKED !! \n");
session->busy = TRUE;
+ imap_refresh_sensitivity(session);
} else {
debug_print("can't lock null session\n");
}
} else {
debug_print("can't lock null session\n");
}
static void unlock_session(IMAPSession *session)
{
if (session) {
static void unlock_session(IMAPSession *session)
{
if (session) {
debug_print("unlocking session %p\n", session);
session->busy = FALSE;
debug_print("unlocking session %p\n", session);
session->busy = FALSE;
+ imap_refresh_sensitivity(session);
} else {
debug_print("can't unlock null session\n");
}
} else {
debug_print("can't unlock null session\n");
}
g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_set_table,
GINT_TO_POINTER(flags_set), ht_data);
}
g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_set_table,
GINT_TO_POINTER(flags_set), ht_data);
}
- if (!g_slist_find(ht_data->msglist, GINT_TO_POINTER(msginfo->msgnum)))
- ht_data->msglist = g_slist_prepend(ht_data->msglist, GINT_TO_POINTER(msginfo->msgnum));
+ ht_data->msglist = g_slist_prepend(ht_data->msglist, GINT_TO_POINTER(msginfo->msgnum));
}
if (flags_unset) {
ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->flags_unset_table,
}
if (flags_unset) {
ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->flags_unset_table,
g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_unset_table,
GINT_TO_POINTER(flags_unset), ht_data);
}
g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_unset_table,
GINT_TO_POINTER(flags_unset), ht_data);
}
- if (!g_slist_find(ht_data->msglist, GINT_TO_POINTER(msginfo->msgnum)))
- ht_data->msglist = g_slist_prepend(ht_data->msglist,
+ ht_data->msglist = g_slist_prepend(ht_data->msglist,
GINT_TO_POINTER(msginfo->msgnum));
}
} else {
GINT_TO_POINTER(msginfo->msgnum));
}
} else {
g_hash_table_destroy(item->flags_unset_table);
item->flags_unset_table = NULL;
}
g_hash_table_destroy(item->flags_unset_table);
item->flags_unset_table = NULL;
}
}
static void imap_set_batch (Folder *folder, FolderItem *_item, gboolean batch)
{
IMAPFolderItem *item = (IMAPFolderItem *)_item;
}
static void imap_set_batch (Folder *folder, FolderItem *_item, gboolean batch)
{
IMAPFolderItem *item = (IMAPFolderItem *)_item;
g_return_if_fail(item != NULL);
g_return_if_fail(item != NULL);
if (!item->flags_unset_table) {
item->flags_unset_table = g_hash_table_new(NULL, g_direct_equal);
}
if (!item->flags_unset_table) {
item->flags_unset_table = g_hash_table_new(NULL, g_direct_equal);
}
+ session = imap_session_get(folder);
+ if (session) {
+ imap_refresh_sensitivity(session);
+ session->sens_update_block = TRUE;
+ unlock_session(session);
+ }
} else {
debug_print("IMAP switching away from batch mode\n");
/* process stuff */
process_hashtable(item);
item->batching = FALSE;
} else {
debug_print("IMAP switching away from batch mode\n");
/* process stuff */
process_hashtable(item);
item->batching = FALSE;
+ session = imap_session_get(folder);
+ if (session) {
+ unlock_session(session);
+ session->sens_update_block = FALSE;
+ imap_refresh_sensitivity(session);
+ }