MICRO_VERSION=11
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=6
+EXTRA_VERSION=7
EXTRA_RELEASE=
if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
dnl ** common code **
dnl *****************
-dnl search for encrypt function
-OLDLIBS=$LIBS
-LIBS=
-AC_SEARCH_LIBS(encrypt, crypt, [], AC_MSG_ERROR(['encrypt'-function not found.]))
-CRYPT_LIBS=$LIBS
-AC_SUBST(CRYPT_LIBS)
-LIBS=$OLDLIBS
-
dnl check for glib
AM_PATH_GLIB(1.2.6,,
AC_MSG_ERROR(Test for GLIB failed. See the file 'INSTALL' for help.),
dnl Check for OpenSSL
AM_PATH_OPENSSL
-dnl Key for password encryption
+dnl password encryption
+OLDLIBS=$LIBS
+LIBS=
+AC_SEARCH_LIBS(encrypt, crypt, [], AC_MSG_ERROR(['encrypt'-function not found.]))
+CRYPT_LIBS=$LIBS
+AC_SUBST(CRYPT_LIBS)
+LIBS=$OLDLIBS
+
AC_ARG_WITH(passcrypt-key, [ --with-passcrypt-key=KEY Key used to encode passwords (8 byte string)],
with_passcrypt_key="$withval", with_passcrypt_key="passkey0")
AC_SUBST(PASSCRYPT_KEY, $with_passcrypt_key)
void folder_item_read_cache (FolderItem *item);
void folder_item_free_cache (FolderItem *item);
gint folder_item_scan_full (FolderItem *item, gboolean filtering);
+static void folder_item_update_with_msg (FolderItem *item, FolderItemUpdateFlags update_flags,
+ MsgInfo *msg);
void folder_system_init(void)
{
folder_item_apply_processing(item);
+ item->opened = TRUE;
+
debug_print("done.\n");
return 0;
folder_item_update_freeze();
msgcache_add_msg(item->cache, newmsginfo);
copy_msginfo_flags(flagsource, newmsginfo);
- folder_item_update(item, F_ITEM_UPDATE_MSGCNT | F_ITEM_UPDATE_CONTENT);
+ folder_item_update_with_msg(item, F_ITEM_UPDATE_MSGCNT | F_ITEM_UPDATE_CONTENT | F_ITEM_UPDATE_ADDMSG, newmsginfo);
folder_item_update_thaw();
}
hooks_invoke(MSGINFO_UPDATE_HOOKLIST, &msginfo_update);
msgcache_remove_msg(item->cache, msginfo->msgnum);
- folder_item_update(msginfo->folder, F_ITEM_UPDATE_MSGCNT | F_ITEM_UPDATE_CONTENT);
+ folder_item_update_with_msg(msginfo->folder, F_ITEM_UPDATE_MSGCNT | F_ITEM_UPDATE_CONTENT | F_ITEM_UPDATE_REMOVEMSG, msginfo);
}
gint folder_item_add_msg(FolderItem *dest, const gchar *file,
remove_msginfo_from_cache(item, msginfo);
procmsg_msginfo_free(msginfo);
}
- folder_item_update(item, F_ITEM_UPDATE_MSGCNT | F_ITEM_UPDATE_CONTENT);
return ret;
}
*/
static gint folder_item_update_freeze_cnt = 0;
+static void folder_item_update_with_msg(FolderItem *item, FolderItemUpdateFlags update_flags, MsgInfo *msg)
+{
+ if (folder_item_update_freeze_cnt == 0 || (msg != NULL && item->opened)) {
+ FolderItemUpdateData source;
+
+ source.item = item;
+ source.update_flags = update_flags;
+ source.msg = msg;
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
+ } else {
+ item->update_flags |= update_flags & ~(F_ITEM_UPDATE_ADDMSG | F_ITEM_UPDATE_REMOVEMSG);
+ }
+}
+
/**
* Notify the folder system about changes to a folder. If the
* update system is not frozen the FOLDER_ITEM_UPDATE_HOOKLIST will
*/
void folder_item_update(FolderItem *item, FolderItemUpdateFlags update_flags)
{
- if (folder_item_update_freeze_cnt == 0) {
- FolderItemUpdateData source;
-
- source.item = item;
- source.update_flags = update_flags;
- hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
- } else {
- item->update_flags |= update_flags;
- }
+ folder_item_update_with_msg(item, update_flags, NULL);
}
void folder_item_update_recursive(FolderItem *item, FolderItemUpdateFlags update_flags)
{
F_ITEM_UPDATE_MSGCNT = 1 << 0,
F_ITEM_UPDATE_CONTENT = 1 << 1,
- F_ITEM_UPDATE_NAME = 1 << 2,
+ F_ITEM_UPDATE_ADDMSG = 1 << 2,
+ F_ITEM_UPDATE_REMOVEMSG = 1 << 3,
+ F_ITEM_UPDATE_NAME = 1 << 4,
} FolderItemUpdateFlags;
typedef void (*FolderUIFunc) (Folder *folder,
{
FolderItem *item;
FolderItemUpdateFlags update_flags;
+ MsgInfo *msg;
};
void folder_system_init (void);