diff -Nupr 1-evo/calendar/ChangeLog 2-evo/calendar/ChangeLog --- 1-evo/calendar/ChangeLog 2008-10-22 10:27:20.000000000 +0530 +++ 2-evo/calendar/ChangeLog 2008-10-22 09:44:22.000000000 +0530 @@ -534,6 +534,11 @@ License Changes (gnome_calendar_on_date_navigator_selection_changed): Use a single model for all the views. +2008-08-13 Suman Manjunath + + * gui/dialogs/comp-editor.c (real_send_comp): Don't replace + attachment list if backend can CREATE_MESSAGES + 2008-08-12 Matthew Barnes * gui/migration.c: diff -Nupr 1-evo/calendar/gui/dialogs/comp-editor.c 2-evo/calendar/gui/dialogs/comp-editor.c --- 1-evo/calendar/gui/dialogs/comp-editor.c 2008-10-22 10:27:20.000000000 +0530 +++ 2-evo/calendar/gui/dialogs/comp-editor.c 2008-10-22 09:44:22.000000000 +0530 @@ -3046,7 +3046,8 @@ real_send_comp (CompEditor *editor, ECal set_attendees_for_delegation (send_comp, address, method); } - if (!e_cal_component_has_attachments (priv->comp)) { + if (!e_cal_component_has_attachments (priv->comp) + || e_cal_get_static_capability (priv->client, CAL_STATIC_CAPABILITY_CREATE_MESSAGES)) { if (itip_send_comp (method, send_comp, priv->client, NULL, NULL, users)) { g_object_unref (send_comp); diff -Nupr 1-evo/calendar/gui/itip-utils.c 2-evo/calendar/gui/itip-utils.c --- 1-evo/calendar/gui/itip-utils.c 2008-10-07 09:00:09.000000000 +0530 +++ 2-evo/calendar/gui/itip-utils.c 2008-10-20 16:04:33.000000000 +0530 @@ -1147,7 +1147,7 @@ itip_send_comp (ECalComponentItipMethod gchar *subject = NULL; gboolean retval = FALSE; - /* check whether backend could handle sending requests/updates */ + /* check whether backend could handle auto-saving requests/updates */ if (method != E_CAL_COMPONENT_METHOD_PUBLISH && e_cal_get_save_schedules (client)) return TRUE; @@ -1157,6 +1157,15 @@ itip_send_comp (ECalComponentItipMethod goto cleanup; } + /* check whether backend could handle sending requests/updates */ + if (method != E_CAL_COMPONENT_METHOD_PUBLISH && e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_CREATE_MESSAGES)) { + if (users) { + g_list_foreach (users, (GFunc) g_free, NULL); + g_list_free (users); + } + return TRUE; + } + /* Tidy up the comp */ comp = comp_compliant (method, send_comp, client, zones); diff -Nupr 1-evo/plugins/itip-formatter/ChangeLog 2-evo/plugins/itip-formatter/ChangeLog --- 1-evo/plugins/itip-formatter/ChangeLog 2008-10-20 09:19:46.000000000 +0530 +++ 2-evo/plugins/itip-formatter/ChangeLog 2008-10-20 16:04:33.000000000 +0530 @@ -66,6 +66,12 @@ License Changes * itip-view.h: +2008-08-14 Suman Manjunath + + * itip-formatter.c (update_x), (update_attendee_status): Copy + required X-* properties . This might be needed for special cases + in certain backends. + 2008-08-11 Matthew Barnes ** Fixes part of bug #546892 diff -Nupr 1-evo/plugins/itip-formatter/itip-formatter.c 2-evo/plugins/itip-formatter/itip-formatter.c --- 1-evo/plugins/itip-formatter/itip-formatter.c 2008-10-20 09:13:02.000000000 +0530 +++ 2-evo/plugins/itip-formatter/itip-formatter.c 2008-10-20 16:04:33.000000000 +0530 @@ -1183,6 +1183,26 @@ remove_delegate (struct _itip_puri *piti } +static void +update_x (ECalComponent *pitip_comp, ECalComponent *comp) +{ + icalcomponent *itip_icalcomp = e_cal_component_get_icalcomponent (pitip_comp); + icalcomponent *icalcomp = e_cal_component_get_icalcomponent (comp); + + icalproperty *prop = icalcomponent_get_first_property (itip_icalcomp, ICAL_X_PROPERTY); + while (prop) { + const char *name = icalproperty_get_x_name (prop); + if (!g_ascii_strcasecmp (name, "X-EVOLUTION-IS-REPLY")) { + icalproperty *new_prop = icalproperty_new_x (icalproperty_get_x (prop)); + icalproperty_set_x_name (new_prop, "X-EVOLUTION-IS-REPLY"); + icalcomponent_add_property (icalcomp, new_prop); + } + prop = icalcomponent_get_next_property (itip_icalcomp, ICAL_X_PROPERTY); + } + + e_cal_component_set_icalcomponent (comp, icalcomp); +} + static void update_attendee_status (struct _itip_puri *pitip) { @@ -1283,6 +1303,8 @@ update_attendee_status (struct _itip_pur } } + update_x (pitip->comp, comp); + if (itip_view_get_update (ITIP_VIEW (pitip->view))) { e_cal_component_commit_sequence (comp); itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, pitip->current_ecal, NULL, NULL, NULL);