|
|
6bbc61 |
diff -up evolution-data-server-3.8.5/camel/camel-vee-folder.c.vfolder-update evolution-data-server-3.8.5/camel/camel-vee-folder.c
|
|
|
6bbc61 |
--- evolution-data-server-3.8.5/camel/camel-vee-folder.c.vfolder-update 2013-07-23 13:57:49.000000000 +0200
|
|
|
6bbc61 |
+++ evolution-data-server-3.8.5/camel/camel-vee-folder.c 2014-01-23 15:47:41.876982760 +0100
|
|
|
6bbc61 |
@@ -1708,6 +1708,30 @@ camel_vee_folder_ignore_next_changed_eve
|
|
|
6bbc61 |
}
|
|
|
6bbc61 |
|
|
|
6bbc61 |
/**
|
|
|
6bbc61 |
+ * camel_vee_folder_remove_from_ignore_changed_event:
|
|
|
6bbc61 |
+ * @vfolder: a #CamelVeeFolder
|
|
|
6bbc61 |
+ * @subfolder: a #CamelFolder folder
|
|
|
6bbc61 |
+ *
|
|
|
6bbc61 |
+ * Make sure the next @subfolder-'s 'changed' event will not be silently ignored.
|
|
|
6bbc61 |
+ * This is a counter-part function of camel_vee_folder_ignore_next_changed_event(),
|
|
|
6bbc61 |
+ * when there was expected a change, which did not happen, to take back the previous
|
|
|
6bbc61 |
+ * ignore event request.
|
|
|
6bbc61 |
+ *
|
|
|
6bbc61 |
+ * Since: 3.10.4
|
|
|
6bbc61 |
+ **/
|
|
|
6bbc61 |
+void
|
|
|
6bbc61 |
+camel_vee_folder_remove_from_ignore_changed_event (CamelVeeFolder *vfolder,
|
|
|
6bbc61 |
+ CamelFolder *subfolder)
|
|
|
6bbc61 |
+{
|
|
|
6bbc61 |
+ g_return_if_fail (CAMEL_IS_VEE_FOLDER (vfolder));
|
|
|
6bbc61 |
+ g_return_if_fail (subfolder != NULL);
|
|
|
6bbc61 |
+
|
|
|
6bbc61 |
+ g_rec_mutex_lock (&vfolder->priv->changed_lock);
|
|
|
6bbc61 |
+ g_hash_table_remove (vfolder->priv->ignore_changed, subfolder);
|
|
|
6bbc61 |
+ g_rec_mutex_unlock (&vfolder->priv->changed_lock);
|
|
|
6bbc61 |
+}
|
|
|
6bbc61 |
+
|
|
|
6bbc61 |
+/**
|
|
|
6bbc61 |
* camel_vee_folder_lock:
|
|
|
6bbc61 |
* @folder: a #CamelVeeFolder
|
|
|
6bbc61 |
* @lock: lock type to lock
|
|
|
6bbc61 |
diff -up evolution-data-server-3.8.5/camel/camel-vee-folder.h.vfolder-update evolution-data-server-3.8.5/camel/camel-vee-folder.h
|
|
|
6bbc61 |
--- evolution-data-server-3.8.5/camel/camel-vee-folder.h.vfolder-update 2013-07-23 13:57:53.000000000 +0200
|
|
|
6bbc61 |
+++ evolution-data-server-3.8.5/camel/camel-vee-folder.h 2014-01-23 15:47:41.876982760 +0100
|
|
|
6bbc61 |
@@ -141,6 +141,9 @@ const gchar * camel_vee_folder_get_expre
|
|
|
6bbc61 |
void camel_vee_folder_ignore_next_changed_event
|
|
|
6bbc61 |
(CamelVeeFolder *vfolder,
|
|
|
6bbc61 |
CamelFolder *subfolder);
|
|
|
6bbc61 |
+void camel_vee_folder_remove_from_ignore_changed_event
|
|
|
6bbc61 |
+ (CamelVeeFolder *vfolder,
|
|
|
6bbc61 |
+ CamelFolder *subfolder);
|
|
|
6bbc61 |
|
|
|
6bbc61 |
void camel_vee_folder_lock (CamelVeeFolder *folder,
|
|
|
6bbc61 |
CamelVeeFolderLock lock);
|
|
|
6bbc61 |
diff -up evolution-data-server-3.8.5/camel/camel-vee-summary.c.vfolder-update evolution-data-server-3.8.5/camel/camel-vee-summary.c
|
|
|
6bbc61 |
--- evolution-data-server-3.8.5/camel/camel-vee-summary.c.vfolder-update 2013-07-23 13:57:42.000000000 +0200
|
|
|
6bbc61 |
+++ evolution-data-server-3.8.5/camel/camel-vee-summary.c 2014-01-23 15:47:41.876982760 +0100
|
|
|
6bbc61 |
@@ -191,10 +191,14 @@ vee_info_set_user_flag (CamelMessageInfo
|
|
|
6bbc61 |
|
|
|
6bbc61 |
res = camel_message_info_set_user_flag (rmi, name, value);
|
|
|
6bbc61 |
|
|
|
6bbc61 |
- camel_message_info_free (rmi);
|
|
|
6bbc61 |
+ if (ignore_changes) {
|
|
|
6bbc61 |
+ if (res)
|
|
|
6bbc61 |
+ vee_summary_notify_mi_changed (vf, mi);
|
|
|
6bbc61 |
+ else
|
|
|
6bbc61 |
+ camel_vee_folder_remove_from_ignore_changed_event (vf, camel_folder_summary_get_folder (rmi->summary));
|
|
|
6bbc61 |
+ }
|
|
|
6bbc61 |
|
|
|
6bbc61 |
- if (ignore_changes)
|
|
|
6bbc61 |
- vee_summary_notify_mi_changed (vf, mi);
|
|
|
6bbc61 |
+ camel_message_info_free (rmi);
|
|
|
6bbc61 |
}
|
|
|
6bbc61 |
|
|
|
6bbc61 |
return res;
|
|
|
6bbc61 |
@@ -220,10 +224,15 @@ vee_info_set_user_tag (CamelMessageInfo
|
|
|
6bbc61 |
camel_vee_folder_ignore_next_changed_event (vf, camel_folder_summary_get_folder (rmi->summary));
|
|
|
6bbc61 |
|
|
|
6bbc61 |
res = camel_message_info_set_user_tag (rmi, name, value);
|
|
|
6bbc61 |
- camel_message_info_free (rmi);
|
|
|
6bbc61 |
|
|
|
6bbc61 |
- if (ignore_changes)
|
|
|
6bbc61 |
- vee_summary_notify_mi_changed (vf, mi);
|
|
|
6bbc61 |
+ if (ignore_changes) {
|
|
|
6bbc61 |
+ if (res)
|
|
|
6bbc61 |
+ vee_summary_notify_mi_changed (vf, mi);
|
|
|
6bbc61 |
+ else
|
|
|
6bbc61 |
+ camel_vee_folder_remove_from_ignore_changed_event (vf, camel_folder_summary_get_folder (rmi->summary));
|
|
|
6bbc61 |
+ }
|
|
|
6bbc61 |
+
|
|
|
6bbc61 |
+ camel_message_info_free (rmi);
|
|
|
6bbc61 |
}
|
|
|
6bbc61 |
|
|
|
6bbc61 |
return res;
|
|
|
6bbc61 |
@@ -259,10 +268,14 @@ vee_info_set_flags (CamelMessageInfo *mi
|
|
|
6bbc61 |
camel_folder_summary_replace_flags (mi->summary, mi);
|
|
|
6bbc61 |
}
|
|
|
6bbc61 |
|
|
|
6bbc61 |
- camel_message_info_free (rmi);
|
|
|
6bbc61 |
+ if (ignore_changes) {
|
|
|
6bbc61 |
+ if (res)
|
|
|
6bbc61 |
+ vee_summary_notify_mi_changed (vf, mi);
|
|
|
6bbc61 |
+ else
|
|
|
6bbc61 |
+ camel_vee_folder_remove_from_ignore_changed_event (vf, camel_folder_summary_get_folder (rmi->summary));
|
|
|
6bbc61 |
+ }
|
|
|
6bbc61 |
|
|
|
6bbc61 |
- if (ignore_changes)
|
|
|
6bbc61 |
- vee_summary_notify_mi_changed (vf, mi);
|
|
|
6bbc61 |
+ camel_message_info_free (rmi);
|
|
|
6bbc61 |
}
|
|
|
6bbc61 |
|
|
|
6bbc61 |
/* Do not call parent class' info_set_flags, to not do flood
|