Folder * folder;
gboolean busy;
gboolean cancelled;
+ gboolean sens_update_block;
};
struct _IMAPNameSpace
return session;
}
+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) {
- MainWindow *mainwin;
-
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");
}
static void unlock_session(IMAPSession *session)
{
if (session) {
- MainWindow *mainwin;
debug_print("unlocking session %p\n", session);
session->busy = FALSE;
+ imap_refresh_sensitivity(session);
} 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);
}
- 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,
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 {
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;
+ IMAPSession *session;
g_return_if_fail(item != NULL);
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;
+ session = imap_session_get(folder);
+ if (session) {
+ unlock_session(session);
+ session->sens_update_block = FALSE;
+ imap_refresh_sensitivity(session);
+ }
}
}