aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/itip-formatter/itip-formatter.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/plugins/itip-formatter/itip-formatter.c b/plugins/itip-formatter/itip-formatter.c
index 6eebfdee92..c2f64a1a17 100644
--- a/plugins/itip-formatter/itip-formatter.c
+++ b/plugins/itip-formatter/itip-formatter.c
@@ -38,6 +38,7 @@
#include <camel/camel-multipart.h>
#include <camel/camel-service.h>
#include <camel/camel-store.h>
+#include <camel/camel-db.h>
#include <libecal/e-cal.h>
#include <libecal/e-cal-time-util.h>
#include <libedataserverui/e-source-selector.h>
@@ -1876,6 +1877,7 @@ view_response_cb (GtkWidget *widget, ItipViewResponse response, gpointer data)
camel_message_info_free (mi);
if (tag) {
int i = 0, count;
+ GSList *list = NULL;
count = camel_folder_summary_count (pitip->folder->summary);
for (i = 0; i < count; i++) {
@@ -1884,12 +1886,18 @@ view_response_cb (GtkWidget *widget, ItipViewResponse response, gpointer data)
continue;
camel_message_info_ref (mi);
if ( camel_message_info_user_tag (mi, "recurrence-key") && g_str_equal (camel_message_info_user_tag (mi, "recurrence-key"), tag)) {
+ camel_folder_summary_remove_uid_fast (pitip->folder->summary, (char *)(mi->uid));
+ camel_folder_change_info_remove_uid (changes, (char *) mi->uid);
+ list = g_slist_prepend (list, (gpointer) mi->uid);
- camel_folder_summary_remove_uid(pitip->folder->summary, (char *)(mi->uid));
- camel_folder_change_info_remove_uid (changes, (char *)(mi->uid));
+ /* step back once to have the right index */
+ count--;
+ i--;
}
camel_message_info_free (mi);
}
+ camel_db_delete_uids (pitip->folder->parent_store->cdb_w, pitip->folder->full_name, list, NULL);
+ g_slist_free (list);
}
} else {
/* Either not a recurring appointment or "apply-to-all" is not selected. So just delete this instance alone */