diff --git a/.evolution.metadata b/.evolution.metadata
new file mode 100644
index 0000000..8315749
--- /dev/null
+++ b/.evolution.metadata
@@ -0,0 +1 @@
+67bc9cefd2fe28e289ed8426ae0683c4121c8bb6 SOURCES/evolution-3.8.5.tar.xz
diff --git a/README.md b/README.md
deleted file mode 100644
index 0e7897f..0000000
--- a/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-The master branch has no content
-
-Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6
-
-If you find this file in a distro specific branch, it means that no content has been checked in yet
diff --git a/SOURCES/evolution-1.4.4-ldap-x86_64-hack.patch b/SOURCES/evolution-1.4.4-ldap-x86_64-hack.patch
new file mode 100644
index 0000000..bb007a3
--- /dev/null
+++ b/SOURCES/evolution-1.4.4-ldap-x86_64-hack.patch
@@ -0,0 +1,21 @@
+diff -up evolution-3.8.4/configure.ldaphack evolution-3.8.4/configure
+--- evolution-3.8.4/configure.ldaphack 2013-07-23 16:47:03.000000000 +0200
++++ evolution-3.8.4/configure 2013-07-24 13:33:22.867430040 +0200
+@@ -16161,7 +16161,7 @@ if ${ac_cv_lib_ldap_ldap_open+:} false;
+ $as_echo_n "(cached) " >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lldap $LDAP_LDFLAGS $LDAP_LIBS $LIBS"
++LIBS="-lldap -lresolv $LDAP_LDFLAGS $LDAP_LIBS $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+@@ -16534,7 +16534,7 @@ if ${ac_cv_lib_ldap_ldap_open+:} false;
+ $as_echo_n "(cached) " >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lldap $LDAP_LDFLAGS $LDAP_LIBS $LIBS"
++LIBS="-lldap -lresolv $LDAP_LDFLAGS $LDAP_LIBS $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
diff --git a/SOURCES/evolution-2.30.1-help-contents.patch b/SOURCES/evolution-2.30.1-help-contents.patch
new file mode 100644
index 0000000..78e2d44
--- /dev/null
+++ b/SOURCES/evolution-2.30.1-help-contents.patch
@@ -0,0 +1,21 @@
+diff -up evolution-3.8.5/shell/e-shell-window-actions.c.help-contents evolution-3.8.5/shell/e-shell-window-actions.c
+--- evolution-3.8.5/shell/e-shell-window-actions.c.help-contents 2013-07-23 14:52:25.000000000 +0200
++++ evolution-3.8.5/shell/e-shell-window-actions.c 2013-10-09 18:34:01.179570314 +0200
+@@ -1402,6 +1402,17 @@ e_shell_window_actions_init (EShellWindo
+ if (path == NULL)
+ gtk_action_set_visible (ACTION (SUBMIT_BUG), FALSE);
+ g_free (path);
++
++ /* Viewing user documentation requires the evolution-help package.
++ * Look for one of the files it installs. */
++ path = g_build_filename (
++ EVOLUTION_DATADIR, "help", "C",
++ PACKAGE, "index.page", NULL);
++ if (!g_file_test (path, G_FILE_TEST_IS_REGULAR)) {
++ gtk_action_set_visible (ACTION (CONTENTS), FALSE);
++ gtk_action_set_sensitive (ACTION (CONTENTS), FALSE);
++ }
++ g_free (path);
+ }
+
+ static GList *
diff --git a/SOURCES/evolution-3.8.5-cert-viewer-crash.patch b/SOURCES/evolution-3.8.5-cert-viewer-crash.patch
new file mode 100644
index 0000000..9f0b3fa
--- /dev/null
+++ b/SOURCES/evolution-3.8.5-cert-viewer-crash.patch
@@ -0,0 +1,12 @@
+diff -up evolution-3.8.5/smime/gui/certificate-viewer.c.cert-viewer-crash evolution-3.8.5/smime/gui/certificate-viewer.c
+--- evolution-3.8.5/smime/gui/certificate-viewer.c.cert-viewer-crash 2013-07-23 14:52:23.000000000 +0200
++++ evolution-3.8.5/smime/gui/certificate-viewer.c 2013-08-12 09:19:29.826358628 +0200
+@@ -538,7 +538,7 @@ get_window_title (CERTCertificate *cert)
+ return title;
+ }
+
+- return cert->subjectName;
++ return g_strdup (cert->subjectName);
+ }
+
+ GtkWidget *
diff --git a/SOURCES/evolution-3.8.5-copy-move-recurrences.patch b/SOURCES/evolution-3.8.5-copy-move-recurrences.patch
new file mode 100644
index 0000000..c454755
--- /dev/null
+++ b/SOURCES/evolution-3.8.5-copy-move-recurrences.patch
@@ -0,0 +1,1616 @@
+Backport of upstream commits:
+
+commit 37768f933d00b64bfc5f902ccc2ecc85fee2b918
+Adding new strings to copy/move event/task/memo and handle possible errors on those operations
+
+commit 96c6e7bc26132d31c87e05a6ef702b008a47ac85
+Add EShellView to E{Calendar,MemoList,TaskList}Selector
+
+commit ed2bc85f4fe13a67aec032c8dddef0614df6419f
+Bug #657808 - Copy/move of a single instance should grab whole serie
+
+diff -up evolution-3.8.5/calendar/calendar.error.xml.copy-move-recurrences evolution-3.8.5/calendar/calendar.error.xml
+--- evolution-3.8.5/calendar/calendar.error.xml.copy-move-recurrences 2013-07-18 14:10:38.000000000 +0200
++++ evolution-3.8.5/calendar/calendar.error.xml 2013-11-04 22:11:17.120317884 +0100
+@@ -307,4 +307,16 @@
+ {0}
+
+
++
++
++ <_primary>Failed to copy an event into the calendar '{0}'
++ {1}
++
++
++
++
++ <_primary>Failed to move an event into the calendar '{0}'
++ {1}
++
++
+
+diff -up evolution-3.8.5/calendar/gui/comp-util.c.copy-move-recurrences evolution-3.8.5/calendar/gui/comp-util.c
+--- evolution-3.8.5/calendar/gui/comp-util.c.copy-move-recurrences 2013-07-23 14:52:29.000000000 +0200
++++ evolution-3.8.5/calendar/gui/comp-util.c 2013-11-04 22:11:17.120317884 +0100
+@@ -813,3 +813,366 @@ icalcomp_suggest_filename (icalcomponent
+
+ return g_strconcat (summary, ".ics", NULL);
+ }
++
++typedef struct _AsyncContext {
++ ECalClient *src_client;
++ icalcomponent *icalcomp_clone;
++ gboolean do_copy;
++} AsyncContext;
++
++struct ForeachTzidData
++{
++ ECalClient *source_client;
++ ECalClient *destination_client;
++ GCancellable *cancellable;
++ GError **error;
++ gboolean success;
++};
++
++static void
++async_context_free (AsyncContext *async_context)
++{
++ if (async_context->src_client)
++ g_object_unref (async_context->src_client);
++
++ if (async_context->icalcomp_clone)
++ icalcomponent_free (async_context->icalcomp_clone);
++
++ g_slice_free (AsyncContext, async_context);
++}
++
++static void
++add_timezone_to_cal_cb (icalparameter *param,
++ gpointer data)
++{
++ struct ForeachTzidData *ftd = data;
++ icaltimezone *tz = NULL;
++ const gchar *tzid;
++
++ g_return_if_fail (ftd != NULL);
++ g_return_if_fail (ftd->source_client != NULL);
++ g_return_if_fail (ftd->destination_client != NULL);
++
++ if (!ftd->success)
++ return;
++
++ if (ftd->cancellable && g_cancellable_is_cancelled (ftd->cancellable)) {
++ ftd->success = FALSE;
++ return;
++ }
++
++ tzid = icalparameter_get_tzid (param);
++ if (!tzid || !*tzid)
++ return;
++
++ if (e_cal_client_get_timezone_sync (ftd->source_client, tzid, &tz, ftd->cancellable, NULL) && tz)
++ ftd->success = e_cal_client_add_timezone_sync (
++ ftd->destination_client, tz, ftd->cancellable, ftd->error);
++}
++
++/* Helper for cal_comp_transfer_item_to() */
++static void
++cal_comp_transfer_item_to_thread (GSimpleAsyncResult *simple,
++ GObject *source_object,
++ GCancellable *cancellable)
++{
++ AsyncContext *async_context;
++ GError *local_error = NULL;
++
++ async_context = g_simple_async_result_get_op_res_gpointer (simple);
++
++ cal_comp_transfer_item_to_sync (
++ async_context->src_client,
++ E_CAL_CLIENT (source_object),
++ async_context->icalcomp_clone,
++ async_context->do_copy,
++ cancellable, &local_error);
++
++ if (local_error != NULL)
++ g_simple_async_result_take_error (simple, local_error);
++}
++
++void
++cal_comp_transfer_item_to (ECalClient *src_client,
++ ECalClient *dest_client,
++ icalcomponent *icalcomp_vcal,
++ gboolean do_copy,
++ GCancellable *cancellable,
++ GAsyncReadyCallback callback,
++ gpointer user_data)
++{
++ GSimpleAsyncResult *simple;
++ AsyncContext *async_context;
++
++ g_return_val_if_fail (E_IS_CAL_CLIENT (src_client), FALSE);
++ g_return_val_if_fail (E_IS_CAL_CLIENT (dest_client), FALSE);
++ g_return_val_if_fail (icalcomp_vcal != NULL, FALSE);
++
++ async_context = g_slice_new0 (AsyncContext);
++ async_context->src_client = g_object_ref (src_client);
++ async_context->icalcomp_clone = icalcomponent_new_clone (icalcomp_vcal);
++ async_context->do_copy = do_copy;
++
++ simple = g_simple_async_result_new (
++ G_OBJECT (dest_client), callback, user_data,
++ cal_comp_transfer_item_to);
++
++ g_simple_async_result_set_check_cancellable (simple, cancellable);
++
++ g_simple_async_result_set_op_res_gpointer (
++ simple, async_context, (GDestroyNotify) async_context_free);
++
++ g_simple_async_result_run_in_thread (
++ simple, cal_comp_transfer_item_to_thread,
++ G_PRIORITY_DEFAULT, cancellable);
++
++ g_object_unref (simple);
++}
++
++gboolean
++cal_comp_transfer_item_to_finish (ECalClient *client,
++ GAsyncResult *result,
++ GError **error)
++{
++ GSimpleAsyncResult *simple;
++
++ g_return_val_if_fail (
++ g_simple_async_result_is_valid (result, G_OBJECT (client), cal_comp_transfer_item_to),
++ FALSE);
++
++ simple = G_SIMPLE_ASYNC_RESULT (result);
++
++ if (g_simple_async_result_propagate_error (simple, error))
++ return FALSE;
++
++ return TRUE;
++}
++
++gboolean
++cal_comp_transfer_item_to_sync (ECalClient *src_client,
++ ECalClient *dest_client,
++ icalcomponent *icalcomp_vcal,
++ gboolean do_copy,
++ GCancellable *cancellable,
++ GError **error)
++{
++ icalcomponent *icalcomp;
++ icalcomponent *icalcomp_event, *subcomp;
++ icalcomponent_kind icalcomp_kind;
++ const gchar *uid;
++ gchar *new_uid = NULL;
++ struct ForeachTzidData ftd;
++ ECalClientSourceType source_type;
++ GHashTable *processed_uids;
++ gboolean success = FALSE;
++
++ g_return_val_if_fail (E_IS_CAL_CLIENT (src_client), FALSE);
++ g_return_val_if_fail (E_IS_CAL_CLIENT (dest_client), FALSE);
++ g_return_val_if_fail (icalcomp_vcal != NULL, FALSE);
++
++ icalcomp_event = icalcomponent_get_inner (icalcomp_vcal);
++ g_return_val_if_fail (icalcomp_event != NULL, FALSE);
++
++ source_type = e_cal_client_get_source_type (src_client);
++ switch (source_type) {
++ case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
++ icalcomp_kind = ICAL_VEVENT_COMPONENT;
++ break;
++ case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
++ icalcomp_kind = ICAL_VTODO_COMPONENT;
++ break;
++ case E_CAL_CLIENT_SOURCE_TYPE_MEMOS:
++ icalcomp_kind = ICAL_VJOURNAL_COMPONENT;
++ break;
++ default:
++ g_return_val_if_reached (FALSE);
++ }
++
++ processed_uids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
++
++ icalcomp_event = icalcomponent_get_first_component (icalcomp_vcal, icalcomp_kind);
++ /*
++ * This check should be removed in the near future.
++ * We should be able to work properly with multiselection, which means that we always
++ * will receive a component with subcomponents.
++ */
++ if (icalcomp_event == NULL)
++ icalcomp_event = icalcomp_vcal;
++ for (;
++ icalcomp_event;
++ icalcomp_event = icalcomponent_get_next_component (icalcomp_vcal, icalcomp_kind)) {
++ GError *local_error = NULL;
++
++ uid = icalcomponent_get_uid (icalcomp_event);
++
++ if (g_hash_table_lookup (processed_uids, uid))
++ continue;
++
++ success = e_cal_client_get_object_sync (dest_client, uid, NULL, &icalcomp, cancellable, &local_error);
++ if (success) {
++ success = e_cal_client_modify_object_sync (
++ dest_client, icalcomp_event, CALOBJ_MOD_ALL, cancellable, error);
++
++ icalcomponent_free (icalcomp);
++ if (!success)
++ goto exit;
++
++ if (!do_copy) {
++ ECalObjModType mod_type = CALOBJ_MOD_THIS;
++
++ /* Remove the item from the source calendar. */
++ if (e_cal_util_component_is_instance (icalcomp_event) ||
++ e_cal_util_component_has_recurrences (icalcomp_event))
++ mod_type = CALOBJ_MOD_ALL;
++
++ success = e_cal_client_remove_object_sync (
++ src_client, uid, NULL, mod_type, cancellable, error);
++ if (!success)
++ goto exit;
++ }
++
++ continue;
++ } else if (local_error != NULL && !g_error_matches (
++ local_error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND)) {
++ g_propagate_error (error, local_error);
++ goto exit;
++ } else {
++ g_clear_error (&local_error);
++ }
++
++ if (e_cal_util_component_is_instance (icalcomp_event)) {
++ GSList *ecalcomps = NULL, *eiter;
++ ECalComponent *comp ;
++
++ success = e_cal_client_get_objects_for_uid_sync (src_client, uid, &ecalcomps, cancellable, error);
++ if (!success)
++ goto exit;
++
++ if (ecalcomps && !ecalcomps->next) {
++ /* only one component, no need for a vCalendar list */
++ comp = ecalcomps->data;
++ icalcomp = icalcomponent_new_clone (e_cal_component_get_icalcomponent (comp));
++ } else {
++ icalcomp = icalcomponent_new (ICAL_VCALENDAR_COMPONENT);
++ for (eiter = ecalcomps; eiter; eiter = g_slist_next (eiter)) {
++ comp = eiter->data;
++
++ icalcomponent_add_component (icalcomp,
++ icalcomponent_new_clone (e_cal_component_get_icalcomponent (comp)));
++ }
++ }
++
++ e_cal_client_free_ecalcomp_slist (ecalcomps);
++ } else {
++ icalcomp = icalcomponent_new_clone (icalcomp_event);
++ }
++
++ if (do_copy) {
++ /* Change the UID to avoid problems with duplicated UID */
++ new_uid = e_cal_component_gen_uid ();
++ if (icalcomponent_isa (icalcomp) == ICAL_VCALENDAR_COMPONENT) {
++ /* in case of a vCalendar, the component might have detached instances,
++ thus change the UID on all of the subcomponents of it */
++ for (subcomp = icalcomponent_get_first_component (icalcomp, icalcomp_kind);
++ subcomp;
++ subcomp = icalcomponent_get_next_component (icalcomp, icalcomp_kind)) {
++ icalcomponent_set_uid (subcomp, new_uid);
++ }
++ } else {
++ icalcomponent_set_uid (icalcomp, new_uid);
++ }
++ g_free (new_uid);
++ new_uid = NULL;
++ }
++
++ ftd.source_client = src_client;
++ ftd.destination_client = dest_client;
++ ftd.cancellable = cancellable;
++ ftd.error = error;
++ ftd.success = TRUE;
++
++ if (icalcomponent_isa (icalcomp) == ICAL_VCALENDAR_COMPONENT) {
++ /* in case of a vCalendar, the component might have detached instances,
++ thus check timezones on all of the subcomponents of it */
++ for (subcomp = icalcomponent_get_first_component (icalcomp, icalcomp_kind);
++ subcomp && ftd.success;
++ subcomp = icalcomponent_get_next_component (icalcomp, icalcomp_kind)) {
++ icalcomponent_foreach_tzid (subcomp, add_timezone_to_cal_cb, &ftd);
++ }
++ } else {
++ icalcomponent_foreach_tzid (icalcomp, add_timezone_to_cal_cb, &ftd);
++ }
++
++ if (!ftd.success) {
++ success = FALSE;
++ goto exit;
++ }
++
++ if (icalcomponent_isa (icalcomp) == ICAL_VCALENDAR_COMPONENT) {
++ gboolean did_add = FALSE;
++
++ /* in case of a vCalendar, the component might have detached instances,
++ thus add the master object first, and then all of the subcomponents of it */
++ for (subcomp = icalcomponent_get_first_component (icalcomp, icalcomp_kind);
++ subcomp && !did_add;
++ subcomp = icalcomponent_get_next_component (icalcomp, icalcomp_kind)) {
++ if (icaltime_is_null_time (icalcomponent_get_recurrenceid (subcomp))) {
++ did_add = TRUE;
++ success = e_cal_client_create_object_sync (dest_client, subcomp,
++ &new_uid, cancellable, error);
++ g_free (new_uid);
++ }
++ }
++
++ if (!success) {
++ icalcomponent_free (icalcomp);
++ goto exit;
++ }
++
++ /* deal with detached instances */
++ for (subcomp = icalcomponent_get_first_component (icalcomp, icalcomp_kind);
++ subcomp && success;
++ subcomp = icalcomponent_get_next_component (icalcomp, icalcomp_kind)) {
++ if (!icaltime_is_null_time (icalcomponent_get_recurrenceid (subcomp))) {
++ if (did_add) {
++ success = e_cal_client_modify_object_sync (dest_client, subcomp,
++ CALOBJ_MOD_THIS, cancellable, error);
++ } else {
++ /* just in case there are only detached instances and no master object */
++ did_add = TRUE;
++ success = e_cal_client_create_object_sync (dest_client, subcomp,
++ &new_uid, cancellable, error);
++ g_free (new_uid);
++ }
++ }
++ }
++ } else {
++ success = e_cal_client_create_object_sync (dest_client, icalcomp, &new_uid, cancellable, error);
++ g_free (new_uid);
++ }
++
++ icalcomponent_free (icalcomp);
++ if (!success)
++ goto exit;
++
++ if (!do_copy) {
++ ECalObjModType mod_type = CALOBJ_MOD_THIS;
++
++ /* Remove the item from the source calendar. */
++ if (e_cal_util_component_is_instance (icalcomp_event) ||
++ e_cal_util_component_has_recurrences (icalcomp_event))
++ mod_type = CALOBJ_MOD_ALL;
++
++ success = e_cal_client_remove_object_sync (src_client, uid, NULL, mod_type, cancellable, error);
++ if (!success)
++ goto exit;
++ }
++
++ g_hash_table_insert (processed_uids, g_strdup (uid), GINT_TO_POINTER (1));
++ }
++
++ exit:
++ g_hash_table_destroy (processed_uids);
++
++ return success;
++}
+diff -up evolution-3.8.5/calendar/gui/comp-util.h.copy-move-recurrences evolution-3.8.5/calendar/gui/comp-util.h
+--- evolution-3.8.5/calendar/gui/comp-util.h.copy-move-recurrences 2013-07-23 14:52:35.000000000 +0200
++++ evolution-3.8.5/calendar/gui/comp-util.h 2013-11-04 22:11:17.121317884 +0100
+@@ -75,4 +75,21 @@ void comp_util_sanitize_recurrence_maste
+
+ gchar *icalcomp_suggest_filename (icalcomponent *icalcomp, const gchar *default_name);
+
++void cal_comp_transfer_item_to (ECalClient *src_client,
++ ECalClient *dest_client,
++ icalcomponent *icalcomp_vcal,
++ gboolean do_copy,
++ GCancellable *cancellable,
++ GAsyncReadyCallback callback,
++ gpointer user_data);
++gboolean cal_comp_transfer_item_to_finish (ECalClient *client,
++ GAsyncResult *result,
++ GError **error);
++gboolean cal_comp_transfer_item_to_sync (ECalClient *src_client,
++ ECalClient *dest_client,
++ icalcomponent *icalcomp_event,
++ gboolean do_copy,
++ GCancellable *cancellable,
++ GError **error);
++
+ #endif
+diff -up evolution-3.8.5/calendar/gui/e-calendar-selector.c.copy-move-recurrences evolution-3.8.5/calendar/gui/e-calendar-selector.c
+--- evolution-3.8.5/calendar/gui/e-calendar-selector.c.copy-move-recurrences 2013-07-23 14:52:35.000000000 +0200
++++ evolution-3.8.5/calendar/gui/e-calendar-selector.c 2013-11-04 22:11:17.122317884 +0100
+@@ -20,7 +20,10 @@
+
+ #include
+
++#include
++
+ #include "e-calendar-selector.h"
++#include "comp-util.h"
+
+ #include
+
+@@ -29,7 +32,9 @@
+ ((obj), E_TYPE_CALENDAR_SELECTOR, ECalendarSelectorPrivate))
+
+ struct _ECalendarSelectorPrivate {
+- gint dummy_value;
++ EShellView *shell_view;
++
++ gpointer transfer_alert; /* weak pointer to EAlert */
+ };
+
+ G_DEFINE_TYPE (
+@@ -37,113 +42,193 @@ G_DEFINE_TYPE (
+ e_calendar_selector,
+ E_TYPE_CLIENT_SELECTOR)
+
+-static gboolean
+-calendar_selector_update_single_object (ECalClient *client,
+- icalcomponent *icalcomp)
++enum {
++ PROP_0,
++ PROP_SHELL_VIEW,
++};
++
++static void
++cal_transferring_update_alert (ECalendarSelector *calendar_selector,
++ EShellView *shell_view,
++ const gchar *domain,
++ const gchar *calendar,
++ const gchar *message)
+ {
+- gchar *uid;
+- icalcomponent *tmp_icalcomp;
++ ECalendarSelectorPrivate *priv;
++ EShellContent *shell_content;
++ EAlert *alert;
++
++ g_return_if_fail (calendar_selector != NULL);
++ g_return_if_fail (calendar_selector->priv != NULL);
++
++ priv = calendar_selector->priv;
++
++ if (priv->transfer_alert) {
++ e_alert_response (
++ priv->transfer_alert,
++ e_alert_get_default_response (priv->transfer_alert));
++ priv->transfer_alert = NULL;
++ }
+
+- uid = (gchar *) icalcomponent_get_uid (icalcomp);
++ if (!message)
++ return;
+
+- if (e_cal_client_get_object_sync (client, uid, NULL, &tmp_icalcomp, NULL, NULL)) {
+- icalcomponent_free (tmp_icalcomp);
++ alert = e_alert_new (domain, calendar, message, NULL);
++ g_return_if_fail (alert != NULL);
+
+- return e_cal_client_modify_object_sync (
+- client, icalcomp, CALOBJ_MOD_ALL, NULL, NULL);
+- }
++ priv->transfer_alert = alert;
++ g_object_add_weak_pointer (G_OBJECT (alert), &priv->transfer_alert);
++ e_alert_start_timer (priv->transfer_alert, 300);
++
++ shell_content = e_shell_view_get_shell_content (shell_view);
++ e_alert_sink_submit_alert (E_ALERT_SINK (shell_content), priv->transfer_alert);
++ g_object_unref (priv->transfer_alert);
++}
+
+- uid = NULL;
+- if (!e_cal_client_create_object_sync (client, icalcomp, &uid, NULL, NULL))
+- return FALSE;
++typedef struct _TransferItemToData {
++ ESource *destination;
++ ESourceSelector *selector;
++ EClient *src_client;
++ EShellView *shell_view;
++ EActivity *activity;
++ icalcomponent *icalcomp;
++ const gchar *display_name;
++ gboolean do_copy;
++} TransferItemToData;
+
+- if (uid)
+- icalcomponent_set_uid (icalcomp, uid);
+- g_free (uid);
++static void
++transfer_item_to_cb (GObject *source_object,
++ GAsyncResult *result,
++ gpointer user_data)
++{
++ TransferItemToData *titd = user_data;
++ GError *error = NULL;
++ GCancellable *cancellable;
++ gboolean success;
+
+- return TRUE;
++ success = cal_comp_transfer_item_to_finish (E_CAL_CLIENT (source_object), result, &error);
++
++ if (!success) {
++ cal_transferring_update_alert (
++ E_CALENDAR_SELECTOR (titd->selector),
++ titd->shell_view,
++ titd->do_copy ? "calendar:failed-copy-event" : "calendar:failed-move-event",
++ titd->display_name,
++ error->message);
++ g_clear_error (&error);
++ }
++
++ cancellable = e_activity_get_cancellable (titd->activity);
++ e_activity_set_state (
++ titd->activity,
++ g_cancellable_is_cancelled (cancellable) ? E_ACTIVITY_CANCELLED : E_ACTIVITY_COMPLETED);
++
++ g_object_unref (titd->activity);
++ icalcomponent_free (titd->icalcomp);
++ g_free (titd);
+ }
+
+-static gboolean
+-calendar_selector_update_objects (ECalClient *client,
+- icalcomponent *icalcomp)
++static void
++destination_client_connect_cb (GObject *source_object,
++ GAsyncResult *result,
++ gpointer user_data)
+ {
+- icalcomponent *subcomp;
+- icalcomponent_kind kind;
++ EClient *client;
++ TransferItemToData *titd = user_data;
++ GCancellable *cancellable;
++ GError *error = NULL;
+
+- kind = icalcomponent_isa (icalcomp);
+- if (kind == ICAL_VTODO_COMPONENT || kind == ICAL_VEVENT_COMPONENT)
+- return calendar_selector_update_single_object (
+- client, icalcomp);
+- else if (kind != ICAL_VCALENDAR_COMPONENT)
+- return FALSE;
+-
+- subcomp = icalcomponent_get_first_component (
+- icalcomp, ICAL_ANY_COMPONENT);
+- while (subcomp != NULL) {
+- gboolean success;
+-
+- kind = icalcomponent_isa (subcomp);
+- if (kind == ICAL_VTIMEZONE_COMPONENT) {
+- icaltimezone *zone;
+- GError *error = NULL;
+-
+- zone = icaltimezone_new ();
+- icaltimezone_set_component (zone, subcomp);
+-
+- e_cal_client_add_timezone_sync (client, zone, NULL, &error);
+- icaltimezone_free (zone, 1);
+-
+- if (error != NULL) {
+- g_warning (
+- "%s: Failed to add timezone: %s",
+- G_STRFUNC, error->message);
+- g_error_free (error);
+- return FALSE;
+- }
+- } else if (kind == ICAL_VTODO_COMPONENT ||
+- kind == ICAL_VEVENT_COMPONENT) {
+- success = calendar_selector_update_single_object (
+- client, subcomp);
+- if (!success)
+- return FALSE;
+- }
++ client = e_client_selector_get_client_finish (E_CLIENT_SELECTOR (source_object), result, &error);
+
+- subcomp = icalcomponent_get_next_component (
+- icalcomp, ICAL_ANY_COMPONENT);
++ /* Sanity check. */
++ g_return_if_fail (
++ ((client != NULL) && (error == NULL)) ||
++ ((client == NULL) && (error != NULL)));
++
++ cancellable = e_activity_get_cancellable (titd->activity);
++
++ if (error != NULL) {
++ cal_transferring_update_alert (
++ E_CALENDAR_SELECTOR (titd->selector),
++ titd->shell_view,
++ titd->do_copy ? "calendar:failed-copy-event" : "calendar:failed-move-event",
++ titd->display_name,
++ error->message);
++ g_clear_error (&error);
++
++ goto exit;
+ }
+
+- return TRUE;
++ if (g_cancellable_is_cancelled (cancellable))
++ goto exit;
++
++ cal_comp_transfer_item_to (
++ E_CAL_CLIENT (titd->src_client), E_CAL_CLIENT (client),
++ titd->icalcomp, titd->do_copy, cancellable, transfer_item_to_cb, titd);
++
++ return;
++
++exit:
++ e_activity_set_state (
++ titd->activity,
++ g_cancellable_is_cancelled (cancellable) ? E_ACTIVITY_CANCELLED : E_ACTIVITY_COMPLETED);
++
++ g_object_unref (titd->activity);
++ icalcomponent_free (titd->icalcomp);
++ g_free (titd);
++
+ }
+
+ static void
+-client_connect_cb (GObject *source_object,
+- GAsyncResult *result,
+- gpointer user_data)
++source_client_connect_cb (GObject *source_object,
++ GAsyncResult *result,
++ gpointer user_data)
+ {
+ EClient *client;
+- icalcomponent *icalcomp = user_data;
++ TransferItemToData *titd = user_data;
++ GCancellable *cancellable;
+ GError *error = NULL;
+
+- g_return_if_fail (icalcomp != NULL);
+-
+- client = e_client_selector_get_client_finish (
+- E_CLIENT_SELECTOR (source_object), result, &error);
++ client = e_client_selector_get_client_finish (E_CLIENT_SELECTOR (source_object), result, &error);
+
+ /* Sanity check. */
+ g_return_if_fail (
+ ((client != NULL) && (error == NULL)) ||
+ ((client == NULL) && (error != NULL)));
+
++ cancellable = e_activity_get_cancellable (titd->activity);
++
+ if (error != NULL) {
+- g_warning ("%s: %s", G_STRFUNC, error->message);
+- g_error_free (error);
++ cal_transferring_update_alert (
++ E_CALENDAR_SELECTOR (titd->selector),
++ titd->shell_view,
++ titd->do_copy ? "calendar:failed-copy-event" : "calendar:failed-move-event",
++ titd->display_name,
++ error->message);
++ g_clear_error (&error);
++
++ goto exit;
+ }
+
+- calendar_selector_update_objects (E_CAL_CLIENT (client), icalcomp);
+- g_object_unref (client);
++ if (g_cancellable_is_cancelled (cancellable))
++ goto exit;
++
++ titd->src_client = client;
++
++ e_client_selector_get_client (
++ E_CLIENT_SELECTOR (titd->selector), titd->destination, cancellable,
++ destination_client_connect_cb, titd);
++
++ return;
+
+- icalcomponent_free (icalcomp);
++exit:
++ e_activity_set_state (
++ titd->activity,
++ g_cancellable_is_cancelled (cancellable) ? E_ACTIVITY_CANCELLED : E_ACTIVITY_COMPLETED);
++
++ g_object_unref (titd->activity);
++ icalcomponent_free (titd->icalcomp);
++ g_free (titd);
+ }
+
+ static void
+@@ -171,40 +256,148 @@ calendar_selector_data_dropped (ESourceS
+ GdkDragAction action,
+ guint info)
+ {
+- GtkTreePath *path = NULL;
+- icalcomponent *icalcomp;
++ icalcomponent *icalcomp = NULL;
++ EActivity *activity;
++ EShellBackend *shell_backend;
++ EShellView *shell_view;
++ ESource *source = NULL;
++ ESourceRegistry *registry;
++ GCancellable *cancellable;
++ gchar **segments;
++ gchar *source_uid = NULL;
++ gchar *message;
++ const gchar *display_name;
+ const guchar *data;
+- gboolean success = FALSE;
+- gpointer object = NULL;
++ gboolean do_copy;
++ TransferItemToData *titd;
+
+ data = gtk_selection_data_get_data (selection_data);
+- icalcomp = icalparser_parse_string ((const gchar *) data);
++ g_return_val_if_fail (data != NULL, FALSE);
+
+- if (icalcomp == NULL)
++ segments = g_strsplit ((const gchar *) data, "\n", 2);
++ if (g_strv_length (segments) != 2)
+ goto exit;
+
+- /* FIXME Deal with GDK_ACTION_ASK. */
+- if (action == GDK_ACTION_COPY) {
+- gchar *uid;
++ source_uid = g_strdup (segments[0]);
++ icalcomp = icalparser_parse_string (segments[1]);
+
+- uid = e_cal_component_gen_uid ();
+- icalcomponent_set_uid (icalcomp, uid);
+- }
++ if (!icalcomp)
++ goto exit;
+
+- e_client_selector_get_client (
+- E_CLIENT_SELECTOR (selector), destination, NULL,
+- client_connect_cb, icalcomp);
++ registry = e_source_selector_get_registry (selector);
++ source = e_source_registry_ref_source (registry, source_uid);
++ if (!source)
++ goto exit;
++
++ shell_view = e_calendar_selector_get_shell_view (E_CALENDAR_SELECTOR (selector));
++ shell_backend = e_shell_view_get_shell_backend (shell_view);
++
++ display_name = e_source_get_display_name (destination);
+
+- success = TRUE;
++ do_copy = action == GDK_ACTION_COPY ? TRUE : FALSE;
++
++ message = do_copy ?
++ g_strdup_printf (_("Copying an event into the calendar %s"), display_name) :
++ g_strdup_printf (_("Moving an event into the calendar %s"), display_name);
++
++ cancellable = g_cancellable_new ();
++ activity = e_activity_new ();
++ e_activity_set_cancellable (activity, cancellable);
++ e_activity_set_state (activity, E_ACTIVITY_RUNNING);
++ e_activity_set_text (activity, message);
++ g_free (message);
++
++ e_shell_backend_add_activity (shell_backend, activity);
++
++ titd = g_new0 (TransferItemToData, 1);
++
++ titd->destination = destination;
++ titd->icalcomp = icalcomponent_new_clone (icalcomp);
++ titd->selector = selector;
++ titd->shell_view = shell_view;
++ titd->activity = activity;
++ titd->display_name = display_name;
++ titd->do_copy = do_copy;
++
++ e_client_selector_get_client (
++ E_CLIENT_SELECTOR (selector), source, cancellable,
++ source_client_connect_cb, titd);
+
+ exit:
+- if (path != NULL)
+- gtk_tree_path_free (path);
++ if (source)
++ g_object_unref (source);
+
+- if (object != NULL)
+- g_object_unref (object);
++ if (icalcomp)
++ icalcomponent_free (icalcomp);
+
+- return success;
++ g_free (source_uid);
++ g_strfreev (segments);
++ return TRUE;
++}
++
++EShellView *
++e_calendar_selector_get_shell_view (ECalendarSelector *calendar_selector)
++{
++ g_return_val_if_fail (E_IS_CALENDAR_SELECTOR (calendar_selector), NULL);
++
++ return calendar_selector->priv->shell_view;
++}
++
++static void
++e_calendar_selector_set_shell_view (ECalendarSelector *calendar_selector,
++ EShellView *shell_view)
++{
++ g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
++ g_return_if_fail (calendar_selector->priv->shell_view == NULL);
++
++ calendar_selector->priv->shell_view = g_object_ref (shell_view);
++}
++
++static void
++calendar_selector_set_property (GObject *object,
++ guint property_id,
++ const GValue *value,
++ GParamSpec *pspec)
++{
++ switch (property_id) {
++ case PROP_SHELL_VIEW:
++ e_calendar_selector_set_shell_view (
++ E_CALENDAR_SELECTOR (object),
++ g_value_get_object (value));
++ return;
++ }
++
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
++}
++
++static void
++calendar_selector_get_property (GObject *object,
++ guint property_id,
++ GValue *value,
++ GParamSpec *pspec)
++{
++ switch (property_id) {
++ case PROP_SHELL_VIEW:
++ g_value_set_object (
++ value,
++ e_calendar_selector_get_shell_view (E_CALENDAR_SELECTOR (object)));
++ return;
++ }
++
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
++}
++
++static void
++calendar_selector_dispose (GObject *object)
++{
++ ECalendarSelectorPrivate *priv;
++
++ priv = E_CALENDAR_SELECTOR_GET_PRIVATE (object);
++
++ g_clear_object (&priv->shell_view);
++
++ /* Chain up to the parent' s dispose() method. */
++ G_OBJECT_CLASS (e_calendar_selector_parent_class)->dispose (object);
+ }
+
+ static void
+@@ -217,9 +410,24 @@ e_calendar_selector_class_init (ECalenda
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = calendar_selector_constructed;
++ object_class->set_property = calendar_selector_set_property;
++ object_class->get_property = calendar_selector_get_property;
++ object_class->dispose = calendar_selector_dispose;
+
+ source_selector_class = E_SOURCE_SELECTOR_CLASS (class);
+ source_selector_class->data_dropped = calendar_selector_data_dropped;
++
++ g_object_class_install_property (
++ object_class,
++ PROP_SHELL_VIEW,
++ g_param_spec_object (
++ "shell-view",
++ NULL,
++ NULL,
++ E_TYPE_SHELL_VIEW,
++ G_PARAM_READWRITE |
++ G_PARAM_CONSTRUCT_ONLY |
++ G_PARAM_STATIC_STRINGS));
+ }
+
+ static void
+@@ -235,12 +443,14 @@ e_calendar_selector_init (ECalendarSelec
+ }
+
+ GtkWidget *
+-e_calendar_selector_new (EClientCache *client_cache)
++e_calendar_selector_new (EClientCache *client_cache,
++ EShellView *shell_view)
+ {
+ ESourceRegistry *registry;
+ GtkWidget *widget;
+
+ g_return_val_if_fail (E_IS_CLIENT_CACHE (client_cache), NULL);
++ g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
+
+ registry = e_client_cache_ref_registry (client_cache);
+
+@@ -248,7 +458,9 @@ e_calendar_selector_new (EClientCache *c
+ E_TYPE_CALENDAR_SELECTOR,
+ "client-cache", client_cache,
+ "extension-name", E_SOURCE_EXTENSION_CALENDAR,
+- "registry", registry, NULL);
++ "registry", registry,
++ "shell-view", shell_view,
++ NULL);
+
+ g_object_unref (registry);
+
+diff -up evolution-3.8.5/calendar/gui/e-calendar-selector.h.copy-move-recurrences evolution-3.8.5/calendar/gui/e-calendar-selector.h
+--- evolution-3.8.5/calendar/gui/e-calendar-selector.h.copy-move-recurrences 2013-07-23 14:52:29.000000000 +0200
++++ evolution-3.8.5/calendar/gui/e-calendar-selector.h 2013-11-04 22:11:17.122317884 +0100
+@@ -22,6 +22,7 @@
+ #define E_CALENDAR_SELECTOR_H
+
+ #include
++#include
+
+ /* Standard GObject macros */
+ #define E_TYPE_CALENDAR_SELECTOR \
+@@ -58,7 +59,10 @@ struct _ECalendarSelectorClass {
+ };
+
+ GType e_calendar_selector_get_type (void);
+-GtkWidget * e_calendar_selector_new (EClientCache *client_cache);
++GtkWidget * e_calendar_selector_new (EClientCache *client_cache,
++ EShellView *shell_backend);
++EShellView * e_calendar_selector_get_shell_view
++ (ECalendarSelector *calendar_selector);
+
+ G_END_DECLS
+
+diff -up evolution-3.8.5/calendar/gui/e-memo-list-selector.c.copy-move-recurrences evolution-3.8.5/calendar/gui/e-memo-list-selector.c
+--- evolution-3.8.5/calendar/gui/e-memo-list-selector.c.copy-move-recurrences 2013-07-23 14:52:30.000000000 +0200
++++ evolution-3.8.5/calendar/gui/e-memo-list-selector.c 2013-11-04 22:11:17.122317884 +0100
+@@ -32,7 +32,7 @@
+ ((obj), E_TYPE_MEMO_LIST_SELECTOR, EMemoListSelectorPrivate))
+
+ struct _EMemoListSelectorPrivate {
+- gint dummy_value;
++ EShellView *shell_view;
+ };
+
+ G_DEFINE_TYPE (
+@@ -40,6 +40,11 @@ G_DEFINE_TYPE (
+ e_memo_list_selector,
+ E_TYPE_CLIENT_SELECTOR)
+
++enum {
++ PROP_0,
++ PROP_SHELL_VIEW
++};
++
+ static gboolean
+ memo_list_selector_update_single_object (ECalClient *client,
+ icalcomponent *icalcomp)
+@@ -323,6 +328,71 @@ memo_list_selector_data_dropped (ESource
+ return TRUE;
+ }
+
++EShellView *
++e_memo_list_selector_get_shell_view (EMemoListSelector *memo_list_selector)
++{
++ g_return_val_if_fail (E_IS_MEMO_LIST_SELECTOR (memo_list_selector), NULL);
++
++ return memo_list_selector->priv->shell_view;
++}
++
++static void
++e_memo_list_selector_set_shell_view (EMemoListSelector *memo_list_selector,
++ EShellView *shell_view)
++{
++ g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
++ g_return_if_fail (memo_list_selector->priv->shell_view == NULL);
++
++ memo_list_selector->priv->shell_view = g_object_ref (shell_view);
++}
++
++static void
++memo_list_selector_set_property (GObject *object,
++ guint property_id,
++ const GValue *value,
++ GParamSpec *pspec)
++{
++ switch (property_id) {
++ case PROP_SHELL_VIEW:
++ e_memo_list_selector_set_shell_view (
++ E_MEMO_LIST_SELECTOR (object),
++ g_value_get_object (value));
++ return;
++ }
++
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
++}
++
++static void
++memo_list_selector_get_property (GObject *object,
++ guint property_id,
++ GValue *value,
++ GParamSpec *pspec)
++{
++ switch (property_id) {
++ case PROP_SHELL_VIEW:
++ g_value_set_object (
++ value,
++ e_memo_list_selector_get_shell_view (E_MEMO_LIST_SELECTOR (object)));
++ return;
++ }
++
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
++}
++
++static void
++memo_list_selector_dispose (GObject *object)
++{
++ EMemoListSelectorPrivate *priv;
++
++ priv = E_MEMO_LIST_SELECTOR_GET_PRIVATE (object);
++
++ g_clear_object (&priv->shell_view);
++
++ /* Chain up to the parent' s dispose() method. */
++ G_OBJECT_CLASS (e_memo_list_selector_parent_class)->dispose (object);
++}
++
+ static void
+ e_memo_list_selector_class_init (EMemoListSelectorClass *class)
+ {
+@@ -333,9 +403,24 @@ e_memo_list_selector_class_init (EMemoLi
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = memo_list_selector_constructed;
++ object_class->set_property = memo_list_selector_set_property;
++ object_class->get_property = memo_list_selector_get_property;
++ object_class->dispose = memo_list_selector_dispose;
+
+ source_selector_class = E_SOURCE_SELECTOR_CLASS (class);
+ source_selector_class->data_dropped = memo_list_selector_data_dropped;
++
++ g_object_class_install_property (
++ object_class,
++ PROP_SHELL_VIEW,
++ g_param_spec_object (
++ "shell-view",
++ NULL,
++ NULL,
++ E_TYPE_SHELL_VIEW,
++ G_PARAM_READWRITE |
++ G_PARAM_CONSTRUCT_ONLY |
++ G_PARAM_STATIC_STRINGS));
+ }
+
+ static void
+@@ -351,12 +436,14 @@ e_memo_list_selector_init (EMemoListSele
+ }
+
+ GtkWidget *
+-e_memo_list_selector_new (EClientCache *client_cache)
++e_memo_list_selector_new (EClientCache *client_cache,
++ EShellView *shell_view)
+ {
+ ESourceRegistry *registry;
+ GtkWidget *widget;
+
+ g_return_val_if_fail (E_IS_CLIENT_CACHE (client_cache), NULL);
++ g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
+
+ registry = e_client_cache_ref_registry (client_cache);
+
+@@ -364,6 +451,7 @@ e_memo_list_selector_new (EClientCache *
+ E_TYPE_MEMO_LIST_SELECTOR,
+ "client-cache", client_cache,
+ "extension-name", E_SOURCE_EXTENSION_MEMO_LIST,
++ "shell-view", shell_view,
+ "registry", registry, NULL);
+
+ g_object_unref (registry);
+diff -up evolution-3.8.5/calendar/gui/e-memo-list-selector.h.copy-move-recurrences evolution-3.8.5/calendar/gui/e-memo-list-selector.h
+--- evolution-3.8.5/calendar/gui/e-memo-list-selector.h.copy-move-recurrences 2013-07-23 14:52:30.000000000 +0200
++++ evolution-3.8.5/calendar/gui/e-memo-list-selector.h 2013-11-04 22:11:17.123317884 +0100
+@@ -27,6 +27,7 @@
+ #define E_MEMO_LIST_SELECTOR_H
+
+ #include
++#include
+
+ /* Standard GObject macros */
+ #define E_TYPE_MEMO_LIST_SELECTOR \
+@@ -63,7 +64,10 @@ struct _EMemoListSelectorClass {
+ };
+
+ GType e_memo_list_selector_get_type (void);
+-GtkWidget * e_memo_list_selector_new (EClientCache *client_cache);
++GtkWidget * e_memo_list_selector_new (EClientCache *client_cache,
++ EShellView *shell_view);
++EShellView * e_memo_list_selector_get_shell_view
++ (EMemoListSelector *memo_list_selector);
+
+ G_END_DECLS
+
+diff -up evolution-3.8.5/calendar/gui/e-task-list-selector.c.copy-move-recurrences evolution-3.8.5/calendar/gui/e-task-list-selector.c
+--- evolution-3.8.5/calendar/gui/e-task-list-selector.c.copy-move-recurrences 2013-07-23 14:52:36.000000000 +0200
++++ evolution-3.8.5/calendar/gui/e-task-list-selector.c 2013-11-04 22:11:17.123317884 +0100
+@@ -32,7 +32,7 @@
+ ((obj), E_TYPE_TASK_LIST_SELECTOR, ETaskListSelectorPrivate))
+
+ struct _ETaskListSelectorPrivate {
+- gint dummy_value;
++ EShellView *shell_view;
+ };
+
+ G_DEFINE_TYPE (
+@@ -40,6 +40,11 @@ G_DEFINE_TYPE (
+ e_task_list_selector,
+ E_TYPE_CLIENT_SELECTOR)
+
++enum {
++ PROP_0,
++ PROP_SHELL_VIEW
++};
++
+ static gboolean
+ task_list_selector_update_single_object (ECalClient *client,
+ icalcomponent *icalcomp)
+@@ -325,6 +330,71 @@ task_list_selector_data_dropped (ESource
+ return TRUE;
+ }
+
++EShellView *
++e_task_list_selector_get_shell_view (ETaskListSelector *task_list_selector)
++{
++ g_return_val_if_fail (E_IS_TASK_LIST_SELECTOR (task_list_selector), NULL);
++
++ return task_list_selector->priv->shell_view;
++}
++
++static void
++e_task_list_selector_set_shell_view (ETaskListSelector *task_list_selector,
++ EShellView *shell_view)
++{
++ g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
++ g_return_if_fail (task_list_selector->priv->shell_view == NULL);
++
++ task_list_selector->priv->shell_view = g_object_ref (shell_view);
++}
++
++static void
++task_list_selector_set_property (GObject *object,
++ guint property_id,
++ const GValue *value,
++ GParamSpec *pspec)
++{
++ switch (property_id) {
++ case PROP_SHELL_VIEW:
++ e_task_list_selector_set_shell_view (
++ E_TASK_LIST_SELECTOR (object),
++ g_value_get_object (value));
++ return;
++ }
++
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
++}
++
++static void
++task_list_selector_get_property (GObject *object,
++ guint property_id,
++ GValue *value,
++ GParamSpec *pspec)
++{
++ switch (property_id) {
++ case PROP_SHELL_VIEW:
++ g_value_set_object (
++ value,
++ e_task_list_selector_get_shell_view (E_TASK_LIST_SELECTOR (object)));
++ return;
++ }
++
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
++}
++
++static void
++task_list_selector_dispose (GObject *object)
++{
++ ETaskListSelectorPrivate *priv;
++
++ priv = E_TASK_LIST_SELECTOR_GET_PRIVATE (object);
++
++ g_clear_object (&priv->shell_view);
++
++ /* Chain up to the parent' s dispose() method. */
++ G_OBJECT_CLASS (e_task_list_selector_parent_class)->dispose (object);
++}
++
+ static void
+ e_task_list_selector_class_init (ETaskListSelectorClass *class)
+ {
+@@ -335,9 +405,24 @@ e_task_list_selector_class_init (ETaskLi
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->constructed = task_list_selector_constructed;
++ object_class->set_property = task_list_selector_set_property;
++ object_class->get_property = task_list_selector_get_property;
++ object_class->dispose = task_list_selector_dispose;
+
+ source_selector_class = E_SOURCE_SELECTOR_CLASS (class);
+ source_selector_class->data_dropped = task_list_selector_data_dropped;
++
++ g_object_class_install_property (
++ object_class,
++ PROP_SHELL_VIEW,
++ g_param_spec_object (
++ "shell-view",
++ NULL,
++ NULL,
++ E_TYPE_SHELL_VIEW,
++ G_PARAM_READWRITE |
++ G_PARAM_CONSTRUCT_ONLY |
++ G_PARAM_STATIC_STRINGS));
+ }
+
+ static void
+@@ -353,12 +438,14 @@ e_task_list_selector_init (ETaskListSele
+ }
+
+ GtkWidget *
+-e_task_list_selector_new (EClientCache *client_cache)
++e_task_list_selector_new (EClientCache *client_cache,
++ EShellView *shell_view)
+ {
+ ESourceRegistry *registry;
+ GtkWidget *widget;
+
+ g_return_val_if_fail (E_IS_CLIENT_CACHE (client_cache), NULL);
++ g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
+
+ registry = e_client_cache_ref_registry (client_cache);
+
+@@ -366,6 +453,7 @@ e_task_list_selector_new (EClientCache *
+ E_TYPE_TASK_LIST_SELECTOR,
+ "client-cache", client_cache,
+ "extension-name", E_SOURCE_EXTENSION_TASK_LIST,
++ "shell-view", shell_view,
+ "registry", registry, NULL);
+
+ g_object_unref (registry);
+diff -up evolution-3.8.5/calendar/gui/e-task-list-selector.h.copy-move-recurrences evolution-3.8.5/calendar/gui/e-task-list-selector.h
+--- evolution-3.8.5/calendar/gui/e-task-list-selector.h.copy-move-recurrences 2013-07-23 14:52:30.000000000 +0200
++++ evolution-3.8.5/calendar/gui/e-task-list-selector.h 2013-11-04 22:11:17.123317884 +0100
+@@ -27,6 +27,7 @@
+ #define E_TASK_LIST_SELECTOR_H
+
+ #include
++#include
+
+ /* Standard GObject macros */
+ #define E_TYPE_TASK_LIST_SELECTOR \
+@@ -63,7 +64,10 @@ struct _ETaskListSelectorClass {
+ };
+
+ GType e_task_list_selector_get_type (void);
+-GtkWidget * e_task_list_selector_new (EClientCache *client_cache);
++GtkWidget * e_task_list_selector_new (EClientCache *client_cache,
++ EShellView *shell_view);
++EShellView * e_task_list_selector_get_shell_view
++ (ETaskListSelector *task_list_selector);
+
+ G_END_DECLS
+
+diff -up evolution-3.8.5/modules/calendar/e-cal-shell-sidebar.c.copy-move-recurrences evolution-3.8.5/modules/calendar/e-cal-shell-sidebar.c
+--- evolution-3.8.5/modules/calendar/e-cal-shell-sidebar.c.copy-move-recurrences 2013-07-23 14:51:47.000000000 +0200
++++ evolution-3.8.5/modules/calendar/e-cal-shell-sidebar.c 2013-11-04 22:11:17.124317884 +0100
+@@ -576,7 +576,7 @@ cal_shell_sidebar_constructed (GObject *
+ container = widget;
+
+ client_cache = e_shell_get_client_cache (shell);
+- widget = e_calendar_selector_new (client_cache);
++ widget = e_calendar_selector_new (client_cache, shell_view);
+ e_source_selector_set_select_new (E_SOURCE_SELECTOR (widget), TRUE);
+ gtk_container_add (GTK_CONTAINER (container), widget);
+ a11y = gtk_widget_get_accessible (widget);
+diff -up evolution-3.8.5/modules/calendar/e-cal-shell-view-private.c.copy-move-recurrences evolution-3.8.5/modules/calendar/e-cal-shell-view-private.c
+--- evolution-3.8.5/modules/calendar/e-cal-shell-view-private.c.copy-move-recurrences 2013-07-23 14:51:48.000000000 +0200
++++ evolution-3.8.5/modules/calendar/e-cal-shell-view-private.c 2013-11-04 22:11:17.125317884 +0100
+@@ -914,30 +914,78 @@ e_cal_shell_view_set_status_message (ECa
+ cal_shell_view->priv->calendar_activity = activity;
+ }
+
+-struct ForeachTzidData
++static void
++cal_transferring_update_alert (ECalShellView *cal_shell_view,
++ const gchar *domain,
++ const gchar *calendar,
++ const gchar *message)
+ {
+- ECalClient *source_client;
+- ECalClient *dest_client;
+-};
++ ECalShellViewPrivate *priv;
++ EShellContent *shell_content;
++ EAlert *alert;
++
++ g_return_if_fail (cal_shell_view != NULL);
++ g_return_if_fail (cal_shell_view->priv != NULL);
++
++ priv = cal_shell_view->priv;
++
++ if (priv->transfer_alert) {
++ e_alert_response (
++ priv->transfer_alert,
++ e_alert_get_default_response (priv->transfer_alert));
++ priv->transfer_alert = NULL;
++ }
++
++ if (!message)
++ return;
++
++ alert = e_alert_new (domain, calendar, message, NULL);
++ g_return_if_fail (alert != NULL);
++
++ priv->transfer_alert = alert;
++ g_object_add_weak_pointer (G_OBJECT (alert), &priv->transfer_alert);
++ e_alert_start_timer (priv->transfer_alert, 300);
++
++ shell_content = e_shell_view_get_shell_content (E_SHELL_VIEW (cal_shell_view));
++ e_alert_sink_submit_alert (E_ALERT_SINK (shell_content), priv->transfer_alert);
++ g_object_unref (priv->transfer_alert);
++}
++
++typedef struct _TransferItemToData {
++ ECalShellView *cal_shell_view;
++ EActivity *activity;
++ const gchar *display_name;
++ gboolean remove;
++} TransferItemToData;
+
+ static void
+-add_timezone_to_cal_cb (icalparameter *param,
+- gpointer data)
++transfer_item_to_cb (GObject *src_object,
++ GAsyncResult *result,
++ gpointer user_data)
+ {
+- struct ForeachTzidData *ftd = data;
+- icaltimezone *tz = NULL;
+- const gchar *tzid;
+-
+- g_return_if_fail (ftd != NULL);
+- g_return_if_fail (ftd->source_client != NULL);
+- g_return_if_fail (ftd->dest_client != NULL);
++ TransferItemToData *titd = user_data;
++ GError *error = NULL;
++ GCancellable *cancellable;
++ gboolean success;
+
+- tzid = icalparameter_get_tzid (param);
+- if (!tzid || !*tzid)
+- return;
++ success = cal_comp_transfer_item_to_finish (E_CAL_CLIENT (src_object), result, &error);
++
++ cancellable = e_activity_get_cancellable (titd->activity);
++ e_activity_set_state (
++ titd->activity,
++ g_cancellable_is_cancelled (cancellable) ? E_ACTIVITY_CANCELLED : E_ACTIVITY_COMPLETED);
++
++ if (!success) {
++ cal_transferring_update_alert (
++ titd->cal_shell_view,
++ titd->remove ? "calendar:failed-move-event" : "calendar:failed-copy-event",
++ titd->display_name,
++ error->message);
++ g_clear_error (&error);
++ }
+
+- if (e_cal_client_get_timezone_sync (ftd->source_client, tzid, &tz, NULL, NULL) && tz)
+- e_cal_client_add_timezone_sync (ftd->dest_client, tz, NULL, NULL);
++ g_object_unref (titd->activity);
++ g_free (titd);
+ }
+
+ void
+@@ -946,129 +994,50 @@ e_cal_shell_view_transfer_item_to (ECalS
+ ECalClient *destination_client,
+ gboolean remove)
+ {
+- icalcomponent *icalcomp;
+- icalcomponent *icalcomp_clone;
+- icalcomponent *icalcomp_event;
+- gboolean success;
+- const gchar *uid;
+-
+- /* XXX This function should be split up into
+- * smaller, more understandable pieces. */
++ EActivity *activity;
++ EShellBackend *shell_backend;
++ ESource *source;
++ GCancellable *cancellable = NULL;
++ gchar *message;
++ const gchar *display_name;
++ TransferItemToData *titd;
+
+ g_return_if_fail (E_IS_CAL_SHELL_VIEW (cal_shell_view));
+ g_return_if_fail (event != NULL);
++ g_return_if_fail (is_comp_data_valid (event) != FALSE);
+ g_return_if_fail (E_IS_CAL_CLIENT (destination_client));
+
+ if (!is_comp_data_valid (event))
+ return;
+
+- icalcomp_event = event->comp_data->icalcomp;
+- uid = icalcomponent_get_uid (icalcomp_event);
+-
+- /* Put the new object into the destination calendar. */
++ source = e_client_get_source (E_CLIENT (destination_client));
++ display_name = e_source_get_display_name (source);
+
+- success = e_cal_client_get_object_sync (
+- destination_client, uid, NULL, &icalcomp, NULL, NULL);
+-
+- if (success) {
+- icalcomponent_free (icalcomp);
+- success = e_cal_client_modify_object_sync (
+- destination_client, icalcomp_event,
+- CALOBJ_MOD_ALL, NULL, NULL);
+-
+- /* do not delete the event when it was found in the calendar */
+- return;
+- } else {
+- icalproperty *icalprop;
+- gchar *new_uid;
+- GError *error = NULL;
+- struct ForeachTzidData ftd;
+-
+- ftd.source_client = event->comp_data->client;
+- ftd.dest_client = destination_client;
+-
+- if (e_cal_util_component_is_instance (icalcomp_event)) {
+- success = e_cal_client_get_object_sync (
+- event->comp_data->client,
+- uid, NULL, &icalcomp, NULL, NULL);
+- if (success) {
+- /* Use master object when working
+- * with a recurring event ... */
+- icalcomp_clone = icalcomponent_new_clone (icalcomp);
+- icalcomponent_free (icalcomp);
+- } else {
+- /* ... or remove the recurrence ID ... */
+- icalcomp_clone =
+- icalcomponent_new_clone (icalcomp_event);
+- if (e_cal_util_component_has_recurrences (icalcomp_clone)) {
+- /* ... for non-detached instances,
+- * to make it a master object. */
+- icalprop = icalcomponent_get_first_property (
+- icalcomp_clone, ICAL_RECURRENCEID_PROPERTY);
+- if (icalprop != NULL)
+- icalcomponent_remove_property (
+- icalcomp_clone, icalprop);
+- }
+- }
+- } else
+- icalcomp_clone =
+- icalcomponent_new_clone (icalcomp_event);
+-
+- icalprop = icalproperty_new_x ("1");
+- icalproperty_set_x_name (icalprop, "X-EVOLUTION-MOVE-CALENDAR");
+- icalcomponent_add_property (icalcomp_clone, icalprop);
+-
+- if (!remove) {
+- /* Change the UID to avoid problems with
+- * duplicated UIDs. */
+- new_uid = e_cal_component_gen_uid ();
+- icalcomponent_set_uid (icalcomp_clone, new_uid);
+- g_free (new_uid);
+- }
+-
+- new_uid = NULL;
+- icalcomponent_foreach_tzid (
+- icalcomp_clone, add_timezone_to_cal_cb, &ftd);
+- success = e_cal_client_create_object_sync (
+- destination_client, icalcomp_clone,
+- &new_uid, NULL, &error);
+- if (!success) {
+- icalcomponent_free (icalcomp_clone);
+- g_warning (
+- "%s: Failed to create object: %s",
+- G_STRFUNC, error->message);
+- g_error_free (error);
+- return;
+- }
+-
+- icalcomponent_free (icalcomp_clone);
+- g_free (new_uid);
+- }
+-
+- if (remove) {
+- ECalClient *source_client = event->comp_data->client;
+-
+- /* Remove the item from the source calendar. */
+- if (e_cal_util_component_is_instance (icalcomp_event) ||
+- e_cal_util_component_has_recurrences (icalcomp_event)) {
+- icaltimetype icaltime;
+- gchar *rid;
+-
+- icaltime =
+- icalcomponent_get_recurrenceid (icalcomp_event);
+- if (!icaltime_is_null_time (icaltime))
+- rid = icaltime_as_ical_string_r (icaltime);
+- else
+- rid = NULL;
+- e_cal_client_remove_object_sync (
+- source_client, uid, rid,
+- CALOBJ_MOD_ALL, NULL, NULL);
+- g_free (rid);
+- } else
+- e_cal_client_remove_object_sync (
+- source_client, uid, NULL,
+- CALOBJ_MOD_THIS, NULL, NULL);
+- }
++ message = remove ?
++ g_strdup_printf (_("Moving an event into the calendar %s"), display_name) :
++ g_strdup_printf (_("Copying an event into the calendar %s"), display_name);
++
++ shell_backend = e_shell_view_get_shell_backend (E_SHELL_VIEW (cal_shell_view));
++
++ cancellable = g_cancellable_new ();
++ activity = e_activity_new ();
++ e_activity_set_cancellable (activity, cancellable);
++ e_activity_set_state (activity, E_ACTIVITY_RUNNING);
++ e_activity_set_text (activity, message);
++ g_free (message);
++
++ e_shell_backend_add_activity (shell_backend, activity);
++
++ titd = g_new0 (TransferItemToData, 1);
++
++ titd->cal_shell_view = cal_shell_view;
++ titd->activity = activity;
++ titd->display_name = display_name;
++ titd->remove = remove;
++
++ cal_comp_transfer_item_to (
++ event->comp_data->client, destination_client,
++ event->comp_data->icalcomp, !remove, cancellable, transfer_item_to_cb, titd);
+ }
+
+ void
+diff -up evolution-3.8.5/modules/calendar/e-cal-shell-view-private.h.copy-move-recurrences evolution-3.8.5/modules/calendar/e-cal-shell-view-private.h
+--- evolution-3.8.5/modules/calendar/e-cal-shell-view-private.h.copy-move-recurrences 2013-07-23 14:51:48.000000000 +0200
++++ evolution-3.8.5/modules/calendar/e-cal-shell-view-private.h 2013-11-04 22:11:17.125317884 +0100
+@@ -115,6 +115,9 @@ struct _ECalShellViewPrivate {
+ gint search_direction; /* negative value is backward, positive is forward, zero is error; in days */
+ GSList *search_hit_cache; /* pointers on time_t for matched events */
+
++ /* Event/Task/Memo transferring */
++ gpointer transfer_alert; /* weak pointer to EAlert * */
++
+ GFileMonitor *monitors[CHECK_NB];
+ };
+
+diff -up evolution-3.8.5/modules/calendar/e-memo-shell-sidebar.c.copy-move-recurrences evolution-3.8.5/modules/calendar/e-memo-shell-sidebar.c
+--- evolution-3.8.5/modules/calendar/e-memo-shell-sidebar.c.copy-move-recurrences 2013-07-23 14:51:47.000000000 +0200
++++ evolution-3.8.5/modules/calendar/e-memo-shell-sidebar.c 2013-11-04 22:11:17.126317884 +0100
+@@ -507,7 +507,7 @@ memo_shell_sidebar_constructed (GObject
+ container = GTK_CONTAINER (widget);
+
+ client_cache = e_shell_get_client_cache (shell);
+- widget = e_memo_list_selector_new (client_cache);
++ widget = e_memo_list_selector_new (client_cache, shell_view);
+ e_source_selector_set_select_new (E_SOURCE_SELECTOR (widget), TRUE);
+ gtk_container_add (container, widget);
+ a11y = gtk_widget_get_accessible (widget);
+diff -up evolution-3.8.5/modules/calendar/e-task-shell-sidebar.c.copy-move-recurrences evolution-3.8.5/modules/calendar/e-task-shell-sidebar.c
+--- evolution-3.8.5/modules/calendar/e-task-shell-sidebar.c.copy-move-recurrences 2013-07-23 14:51:47.000000000 +0200
++++ evolution-3.8.5/modules/calendar/e-task-shell-sidebar.c 2013-11-04 22:11:17.126317884 +0100
+@@ -507,7 +507,7 @@ task_shell_sidebar_constructed (GObject
+ container = GTK_CONTAINER (widget);
+
+ client_cache = e_shell_get_client_cache (shell);
+- widget = e_task_list_selector_new (client_cache);
++ widget = e_task_list_selector_new (client_cache, shell_view);
+ e_source_selector_set_select_new (E_SOURCE_SELECTOR (widget), TRUE);
+ gtk_container_add (container, widget);
+ a11y = gtk_widget_get_accessible (widget);
diff --git a/SOURCES/evolution-3.8.5-custom-msg-in-reminder.patch b/SOURCES/evolution-3.8.5-custom-msg-in-reminder.patch
new file mode 100644
index 0000000..a48aa62
--- /dev/null
+++ b/SOURCES/evolution-3.8.5-custom-msg-in-reminder.patch
@@ -0,0 +1,149 @@
+diff -up evolution-3.8.5/calendar/alarm-notify/alarm-queue.c.evo evolution-3.8.5/calendar/alarm-notify/alarm-queue.c
+--- evolution-3.8.5/calendar/alarm-notify/alarm-queue.c.evo 2013-08-01 14:12:40.000000000 +0200
++++ evolution-3.8.5/calendar/alarm-notify/alarm-queue.c 2013-10-09 08:37:59.488015698 +0200
+@@ -1593,37 +1593,51 @@ tray_list_add_new (TrayIconData *data)
+ message_push ((Message *) msg);
+ }
+
+-static void
++static gchar *
+ alarm_queue_get_alarm_summary (ECalClient *cal_client,
+ ECalComponent *comp,
+- const ECalComponentAlarmInstance *instance,
+- ECalComponentText *text,
+- ECalComponentAlarm **palarm)
++ const ECalComponentAlarmInstance *instance)
+ {
+- g_return_if_fail (comp != NULL);
+- g_return_if_fail (instance != NULL);
+- g_return_if_fail (instance->auid != NULL);
+- g_return_if_fail (text != NULL);
+- g_return_if_fail (palarm != NULL);
++ ECalComponentAlarm *alarm = NULL;
++ ECalComponentText summary_text, alarm_text;
++ gchar *alarm_summary;
++
++ g_return_val_if_fail (comp != NULL, NULL);
++ g_return_val_if_fail (instance != NULL, NULL);
++ g_return_val_if_fail (instance->auid != NULL, NULL);
++
++ summary_text.value = NULL;
++ alarm_text.value = NULL;
+
+- text->value = NULL;
++ e_cal_component_get_summary (comp, &summary_text);
+
+ if (e_client_check_capability (E_CLIENT (cal_client), "alarm-description")) {
+- *palarm = e_cal_component_get_alarm (comp, instance->auid);
+- if (*palarm) {
+- e_cal_component_alarm_get_description (*palarm, text);
+- if (!text->value || !*text->value) {
+- text->value = NULL;
+- e_cal_component_alarm_free (*palarm);
+- *palarm = NULL;
+- }
+- } else {
+- *palarm = NULL;
++ alarm = e_cal_component_get_alarm (comp, instance->auid);
++ if (alarm) {
++ e_cal_component_alarm_get_description (alarm, &alarm_text);
++ if (!alarm_text.value || !*alarm_text.value)
++ alarm_text.value = NULL;
+ }
+ }
+
+- if (!text->value)
+- e_cal_component_get_summary (comp, text);
++ if (alarm_text.value && summary_text.value &&
++ e_util_utf8_strcasecmp (alarm_text.value, summary_text.value) == 0)
++ alarm_text.value = NULL;
++
++ if (summary_text.value && *summary_text.value &&
++ alarm_text.value && *alarm_text.value)
++ alarm_summary = g_strconcat (summary_text.value, "\n", alarm_text.value, NULL);
++ else if (summary_text.value && *summary_text.value)
++ alarm_summary = g_strdup (summary_text.value);
++ else if (alarm_text.value && *alarm_text.value)
++ alarm_summary = g_strdup (alarm_text.value);
++ else
++ alarm_summary = NULL;
++
++ if (alarm)
++ e_cal_component_alarm_free (alarm);
++
++ return alarm_summary;
+ }
+
+ /* Performs notification of a display alarm */
+@@ -1635,8 +1649,8 @@ display_notification (time_t trigger,
+ {
+ QueuedAlarm *qa;
+ ECalComponent *comp;
+- ECalComponentAlarm *comp_alarm = NULL;
+ const gchar *summary, *description, *location;
++ gchar *alarm_summary;
+ TrayIconData *tray_data;
+ ECalComponentText text;
+ GSList *text_list;
+@@ -1652,11 +1666,11 @@ display_notification (time_t trigger,
+ return;
+
+ /* get a sensible description for the event */
+- alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance, &text, &comp_alarm);
++ alarm_summary = alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance);
+ e_cal_component_get_organizer (comp, &organiser);
+
+- if (text.value)
+- summary = text.value;
++ if (alarm_summary && *alarm_summary)
++ summary = alarm_summary;
+ else
+ summary = _("No summary available.");
+
+@@ -1735,8 +1749,7 @@ display_notification (time_t trigger,
+ gtk_status_icon_set_tooltip_text (tray_icon, str);
+ }
+
+- if (comp_alarm)
+- e_cal_component_alarm_free (comp_alarm);
++ g_free (alarm_summary);
+ g_free (start_str);
+ g_free (end_str);
+ g_free (alarm_str);
+@@ -1771,9 +1784,8 @@ popup_notification (time_t trigger,
+ {
+ QueuedAlarm *qa;
+ ECalComponent *comp;
+- ECalComponentAlarm *comp_alarm = NULL;
+ const gchar *summary, *location;
+- ECalComponentText text;
++ gchar *alarm_summary;
+ gchar *str, *start_str, *end_str, *alarm_str, *time_str;
+ icaltimezone *current_zone;
+ ECalComponentOrganizer organiser;
+@@ -1790,11 +1802,11 @@ popup_notification (time_t trigger,
+ notify_init (_("Evolution Reminders"));
+
+ /* get a sensible description for the event */
+- alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance, &text, &comp_alarm);
++ alarm_summary = alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance);
+ e_cal_component_get_organizer (comp, &organiser);
+
+- if (text.value)
+- summary = text.value;
++ if (alarm_summary && *alarm_summary)
++ summary = alarm_summary;
+ else
+ summary = _("No summary available.");
+
+@@ -1845,9 +1857,7 @@ popup_notification (time_t trigger,
+ if (!notify_notification_show (notify, NULL))
+ g_warning ("Could not send notification to daemon\n");
+
+- if (comp_alarm)
+- e_cal_component_alarm_free (comp_alarm);
+- /* create the private structure */
++ g_free (alarm_summary);
+ g_free (start_str);
+ g_free (end_str);
+ g_free (alarm_str);
diff --git a/SOURCES/evolution-3.8.5-signature-bar-text-color.patch b/SOURCES/evolution-3.8.5-signature-bar-text-color.patch
new file mode 100644
index 0000000..79f6e36
--- /dev/null
+++ b/SOURCES/evolution-3.8.5-signature-bar-text-color.patch
@@ -0,0 +1,28 @@
+diff -up evolution-3.8.5/em-format/e-mail-formatter-secure-button.c.signature-bar-text-color evolution-3.8.5/em-format/e-mail-formatter-secure-button.c
+--- evolution-3.8.5/em-format/e-mail-formatter-secure-button.c.signature-bar-text-color 2013-07-23 14:51:36.000000000 +0200
++++ evolution-3.8.5/em-format/e-mail-formatter-secure-button.c 2013-10-17 12:42:10.161068435 +0200
+@@ -66,8 +66,13 @@ static const struct {
+ { "stock_lock-ok", N_("Encrypted, strong"), N_("This message is encrypted, with a strong encryption algorithm. It would be very difficult for an outsider to view the content of this message in a practical amount of time.") },
+ };
+
+-static const GdkRGBA smime_sign_colour[5] = {
+- { 0 }, { 0.53, 0.73, 0.53, 1 }, { 0.73, 0.53, 0.53, 1 }, { 0.91, 0.82, 0.13, 1 }, { 0 },
++static const GdkRGBA smime_sign_colour[6] = {
++ { 0.0, 0.0, 0.0, 0.0 },
++ { 0.53, 0.73, 0.53, 1.0 },
++ { 0.73, 0.53, 0.53, 1.0 },
++ { 0.91, 0.82, 0.13, 1.0 },
++ { 0.0, 0.0, 0.0, 0.0 },
++ { 0.0, 0.0, 0.0, 1.0 }
+ };
+
+ static gboolean
+@@ -414,6 +419,8 @@ secure_button_get_widget_for_validity (C
+ gtk_button_set_image (GTK_BUTTON (button), widget);
+
+ widget = gtk_label_new (description);
++ /* make sure the text color doesn't change with theme */
++ gtk_widget_override_color (widget, GTK_STATE_FLAG_NORMAL, &smime_sign_colour[5]);
+ gtk_box_pack_start (GTK_BOX (layout), widget, FALSE, FALSE, 0);
+
+ g_free (description);
diff --git a/SOURCES/evolution-3.8.5-webview-wrap-anchors.patch b/SOURCES/evolution-3.8.5-webview-wrap-anchors.patch
new file mode 100644
index 0000000..3f23383
--- /dev/null
+++ b/SOURCES/evolution-3.8.5-webview-wrap-anchors.patch
@@ -0,0 +1,35 @@
+diff -up evolution-3.8.5/data/webview.css.webview-wrap-anchors evolution-3.8.5/data/webview.css
+--- evolution-3.8.5/data/webview.css.webview-wrap-anchors 2013-05-09 05:44:33.000000000 +0200
++++ evolution-3.8.5/data/webview.css 2013-10-10 08:57:00.299962735 +0200
+@@ -72,6 +72,11 @@ object { /* GtkWidgets */
+ font-weight: bold;
+ }
+
++a {
++ white-space:normal;
++ word-break:break-all;
++}
++
+ /**** HEADERS ****/
+
+ table.header {
+diff -up evolution-3.8.5/data/webview-print.css.webview-wrap-anchors evolution-3.8.5/data/webview-print.css
+--- evolution-3.8.5/data/webview-print.css.webview-wrap-anchors 2013-03-17 13:46:12.000000000 +0100
++++ evolution-3.8.5/data/webview-print.css 2013-10-10 08:57:00.298962735 +0200
+@@ -41,6 +41,11 @@ th {
+ margin: 8px;
+ }
+
++a {
++ white-space:normal;
++ word-break:break-all;
++}
++
+ /***** PRINTING *******/
+
+ .printing-header {
+@@ -60,4 +65,3 @@ th {
+ .attachments-list th {
+ font-weight: bold;
+ }
+-
diff --git a/SPECS/evolution.spec b/SPECS/evolution.spec
new file mode 100644
index 0000000..406b17d
--- /dev/null
+++ b/SPECS/evolution.spec
@@ -0,0 +1,2914 @@
+%global _changelog_trimtime %(date +%s -d "1 year ago")
+
+%define glib2_version 2.34.0
+%define gtk3_version 3.4.0
+%define gtkhtml_version 4.6.6
+%define gnome_desktop_version 2.91.3
+%define gnome_doc_utils_version 0.8.0
+%define gnome_icon_theme_version 2.30.2.1
+%define intltool_version 0.35.5
+%define libgdata_version 0.10.0
+%define libgweather_version 3.5.0
+%define libsoup_version 2.40.3
+%define clutter_gtk_version 0.10
+%define webkit_version 1.8.0
+
+%define evo_base_version 3.8
+
+%define last_anjal_version 0.3.2-3
+%define last_libgal2_version 2:2.5.3-2
+%define last_evo_nm_version 3.5.0
+
+%define inline_audio_support 1
+%define ldap_support 1
+%define libnotify_support 1
+%define libpst_support 1
+%define krb5_support 1
+
+%define evo_plugin_dir %{_libdir}/evolution/%{evo_base_version}/plugins
+
+### Abstract ###
+
+Name: evolution
+Version: 3.8.5
+Release: 9%{?dist}
+Group: Applications/Productivity
+Summary: Mail and calendar client for GNOME
+License: GPLv2+ and GFDL
+URL: http://projects.gnome.org/evolution/
+BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+Source: http://download.gnome.org/sources/%{name}/3.8/%{name}-%{version}.tar.xz
+
+Obsoletes: anjal <= %{last_anjal_version}
+Obsoletes: libgal2 <= %{last_libgal2_version}
+Obsoletes: evolution-NetworkManager < %{last_evo_nm_version}
+
+### Patches ###
+
+# bad hack
+Patch01: evolution-1.4.4-ldap-x86_64-hack.patch
+
+# RH bug #589555
+Patch02: evolution-2.30.1-help-contents.patch
+
+# RH bug #995516
+Patch03: evolution-3.8.5-cert-viewer-crash.patch
+
+# RH bug #948321
+Patch04: evolution-3.8.5-custom-msg-in-reminder.patch
+
+# RH bug #864904
+Patch05: evolution-3.8.5-webview-wrap-anchors.patch
+
+# RH bug #965696
+Patch06: evolution-3.8.5-signature-bar-text-color.patch
+
+# RH bug #1026776
+Patch07: evolution-3.8.5-copy-move-recurrences.patch
+
+## Dependencies ###
+
+Requires: gnome-icon-theme >= %{gnome_icon_theme_version}
+Requires: gvfs
+Requires: highlight
+
+### Build Dependencies ###
+
+BuildRequires: atk-devel
+BuildRequires: autoconf >= 2.59
+BuildRequires: automake >= 1.9
+BuildRequires: cairo-gobject-devel
+BuildRequires: clutter-gtk-devel >= %{clutter_gtk_version}
+BuildRequires: desktop-file-utils
+BuildRequires: evolution-data-server-devel >= %{version}
+BuildRequires: gettext
+BuildRequires: glib2-devel >= %{glib2_version}
+BuildRequires: gnome-common
+BuildRequires: gnome-desktop3-devel >= %{gnome_desktop_version}
+BuildRequires: gnome-doc-utils >= %{gnome_doc_utils_version}
+BuildRequires: gnome-online-accounts
+BuildRequires: gnutls-devel
+BuildRequires: gtk-doc
+BuildRequires: gtk3-devel >= %{gtk3_version}
+BuildRequires: gtkhtml3-devel >= %{gtkhtml_version}
+BuildRequires: highlight
+BuildRequires: intltool >= %{intltool_version}
+BuildRequires: itstool
+BuildRequires: libcanberra-devel
+BuildRequires: libgdata-devel >= %{libgdata_version}
+BuildRequires: libgweather-devel >= %{libgweather_version}
+BuildRequires: libpst-devel
+BuildRequires: libsoup-devel >= %{libsoup_version}
+BuildRequires: libtool >= 1.5
+BuildRequires: libxml2-devel
+BuildRequires: nspr-devel
+BuildRequires: nss-devel
+BuildRequires: pkgconfig
+BuildRequires: webkitgtk3-devel >= %{webkit_version}
+BuildRequires: yelp-tools
+
+%if %{inline_audio_support}
+BuildRequires: gstreamer1-devel
+%endif
+
+%if %{ldap_support}
+BuildRequires: openldap-devel >= 2.0.11
+%endif
+
+%if %{krb5_support}
+BuildRequires: krb5-devel
+# tweak for krb5 1.2 vs 1.3
+%define krb5dir /usr/kerberos
+#define krb5dir `pwd`/krb5-fakeprefix
+%endif
+
+%if %{libnotify_support}
+BuildRequires: libnotify-devel
+%endif
+
+%if %{libpst_support}
+BuildRequires: libpst-devel
+%endif
+
+%description
+Evolution is the GNOME mailer, calendar, contact manager and
+communications tool. The components which make up Evolution
+are tightly integrated with one another and act as a seamless
+personal information-management tool.
+
+%package devel
+Group: Development/Libraries
+Summary: Development files for building against %{name}
+Requires: %{name} = %{version}-%{release}
+Requires: evolution-data-server-devel >= %{version}
+Requires: gtk3-devel >= %{gtk3_version}
+Requires: gtkhtml3-devel >= %{gtkhtml_version}
+Requires: libgdata-devel >= %{libgdata_version}
+Requires: libgweather-devel >= %{libgweather_version}
+Requires: libsoup-devel >= %{libsoup_version}
+Requires: libxml2-devel
+Obsoletes: libgal2-devel <= %{last_libgal2_version}
+
+%description devel
+Development files needed for building things which link against %{name}.
+
+%package devel-docs
+Summary: Developer documentation for Evolution
+Group: Development/Libraries
+Requires: devhelp
+Requires: evolution-devel = %{version}-%{release}
+BuildArch: noarch
+
+%description devel-docs
+This package contains developer documentation for Evolution.
+
+%package help
+Group: Applications/Productivity
+Summary: Help files for %{name}
+Requires: %{name} = %{version}-%{release}
+Requires: yelp
+BuildArch: noarch
+
+%description help
+This package contains user documentation for %{name}.
+
+%package bogofilter
+Group: Applications/Productivity
+Summary: Bogofilter plugin for Evolution
+Requires: %{name} = %{version}-%{release}
+Requires: bogofilter
+BuildRequires: bogofilter
+
+%description bogofilter
+This package contains the plugin to filter junk mail using Bogofilter.
+
+%package spamassassin
+Group: Applications/Productivity
+Summary: SpamAssassin plugin for Evolution
+Requires: %{name} = %{version}-%{release}
+Requires: spamassassin
+BuildRequires: spamassassin
+
+%description spamassassin
+This package contains the plugin to filter junk mail using SpamAssassin.
+
+%package perl
+Group: Applications/Productivity
+Summary: Supplemental utilities that require Perl
+Requires: %{name} = %{version}-%{release}
+
+%description perl
+This package contains supplemental utilities for %{name} that require Perl.
+
+%if %{libpst_support}
+%package pst
+Group: Applications/Productivity
+Summary: PST importer plugin for Evolution
+Requires: %{name} = %{version}-%{release}
+
+%description pst
+This package contains the plugin to import Microsoft Personal Storage Table
+(PST) files used by Microsoft Outlook and Microsoft Exchange.
+%endif
+
+%prep
+%setup -q -n evolution-%{version}
+%patch01 -p1 -b .ldaphack
+%patch02 -p1 -b .help-contents
+%patch03 -p1 -b .cert-viewer-crash
+%patch04 -p1 -b .custom-msg-in-reminder
+%patch05 -p1 -b .webview-wrap-anchors
+%patch06 -p1 -b .signature-bar-text-color
+%patch07 -p1 -b .copy-move-recurrences
+
+mkdir -p krb5-fakeprefix/include
+mkdir -p krb5-fakeprefix/lib
+mkdir -p krb5-fakeprefix/%{_lib}
+
+# Remove the welcome email from Novell
+for inbox in mail/default/*/Inbox; do
+ echo -n "" > $inbox
+done
+
+%build
+# define all of our flags, this is kind of ugly :(
+%if %{ldap_support}
+%define ldap_flags --with-openldap=yes
+%else
+%define ldap_flags --without-openldap
+%endif
+
+%if %{krb5_support}
+%define krb5_flags --with-krb5=%{krb5dir}
+%else
+%define krb5_flags --without-krb5
+%endif
+
+%define ssl_flags --enable-nss=yes --enable-smime=yes
+
+if ! pkg-config --exists nss; then
+ echo "Unable to find suitable version of mozilla nss to use!"
+ exit 1
+fi
+
+CPPFLAGS="-I%{_includedir}/et"; export CPPFLAGS
+CFLAGS="$RPM_OPT_FLAGS -fPIC -DLDAP_DEPRECATED -I%{_includedir}/et -Wno-sign-compare"; export CFLAGS
+
+# Regenerate configure to pick up configure.ac changes
+aclocal -I m4
+autoheader
+automake --add-missing
+libtoolize
+intltoolize --force
+autoconf
+
+%configure \
+ --disable-maintainer-mode \
+ --enable-gtk-doc \
+ --with-sub-version=" (%{version}-%{release})" \
+ %ldap_flags %krb5_flags %ssl_flags \
+ --enable-plugins=all
+export tagname=CC
+make %{?_smp_mflags} LIBTOOL=/usr/bin/libtool CFLAGS="$CFLAGS -fno-strict-aliasing"
+
+# Strip unneeded translations from .mo files.
+# This reduces the RPM size by several megabytes.
+#cd po
+#grep -v ".*[.]desktop[.]in[.]in$" POTFILES.in > POTFILES.keep
+#mv POTFILES.keep POTFILES.in
+#intltool-update --gettext-package=%{name}-%{evo_base_version} --pot
+#for p in *.po; do
+# msgmerge $p %{name}-%{evo_base_version}.pot > $p.out
+# msgfmt -o `basename $p .po`.gmo $p.out
+#done
+#cd -
+
+# Replace identical images in the help by links.
+# This reduces the RPM size by several megabytes.
+helpdir=$RPM_BUILD_ROOT%{_datadir}/gnome/help/%{name}
+for f in $helpdir/C/figures/*.png; do
+ b="$(basename $f)"
+ for d in $helpdir/*; do
+ if [ -d "$d" -a "$d" != "$helpdir/C" ]; then
+ g="$d/figures/$b"
+ if [ -f "$g" ]; then
+ if cmp -s $f $g; then
+ rm "$g"; ln -s "../../C/figures/$b" "$g"
+ fi
+ fi
+ fi
+ done
+done
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
+export tagname=CC
+make LIBTOOL=/usr/bin/libtool DESTDIR=$RPM_BUILD_ROOT install
+unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
+
+# remove libtool archives for importers and the like
+find $RPM_BUILD_ROOT/%{_libdir}/evolution -name '*.la' -exec rm {} \;
+
+# remove statically built libraries:
+find $RPM_BUILD_ROOT/%{_libdir}/evolution -name '*.a' -exec rm {} \;
+
+# remove additional things we don't want
+%if ! %{inline_audio_support}
+%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/evolution/%{evo_base_version}/modules/module-audio-inline.so
+%endif
+
+%find_lang evolution-%{evo_base_version} --all-name --with-gnome
+
+grep "/usr/share/locale" evolution-%{evo_base_version}.lang > translations.lang
+grep -v "/usr/share/locale" evolution-%{evo_base_version}.lang > help.lang
+
+%post
+/sbin/ldconfig
+/usr/bin/update-desktop-database &> /dev/null || :
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun
+/sbin/ldconfig
+/usr/bin/update-desktop-database &> /dev/null || :
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || :
+fi
+
+%posttrans
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || :
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -f translations.lang
+%defattr(-, root, root)
+%doc AUTHORS COPYING NEWS README
+
+# GSettings schemas:
+%{_datadir}/GConf/gsettings/evolution.convert
+
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.shell.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.addressbook.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.calendar.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.mail.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.importer.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.bogofilter.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.spamassassin.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.attachment-reminder.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.autocontacts.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.email-custom-header.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.external-editor.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.face-picture.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.itip.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.mail-notification.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.prefer-plain.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.publish-calendar.gschema.xml
+%{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.templates.gschema.xml
+
+# The main executable
+%{_bindir}/evolution
+
+# Desktop files:
+%{_datadir}/applications/evolution.desktop
+%{_sysconfdir}/xdg/autostart/evolution-alarm-notify.desktop
+
+# Icons:
+%{_datadir}/icons/hicolor/16x16/apps/*
+%{_datadir}/icons/hicolor/22x22/apps/*
+%{_datadir}/icons/hicolor/24x24/apps/*
+%{_datadir}/icons/hicolor/32x32/apps/*
+%{_datadir}/icons/hicolor/48x48/apps/*
+%{_datadir}/icons/hicolor/256x256/apps/*
+
+# The main data directory
+# (have not attempted to split this up into an explicit list)
+%dir %{_datadir}/evolution
+%{_datadir}/evolution/%{evo_base_version}
+
+# Modules:
+%dir %{_libdir}/evolution
+%dir %{_libdir}/evolution/%{evo_base_version}
+%dir %{_libdir}/evolution/%{evo_base_version}/modules
+%{_libdir}/evolution/%{evo_base_version}/modules/module-addressbook.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-backup-restore.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-book-config-google.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-book-config-ldap.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-book-config-local.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-book-config-webdav.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-cal-config-caldav.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-cal-config-contacts.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-cal-config-google.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-cal-config-local.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-cal-config-weather.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-cal-config-webcal.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-calendar.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-composer-autosave.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-itip-formatter.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-mail-config.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-mail.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-mailto-handler.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-mdn.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-offline-alert.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-online-accounts.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-prefer-plain.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-plugin-lib.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-plugin-manager.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-settings.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-startup-wizard.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-text-highlight.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-vcard-inline.so
+%{_libdir}/evolution/%{evo_base_version}/modules/module-web-inspector.so
+
+%if %{inline_audio_support}
+%{_libdir}/evolution/%{evo_base_version}/modules/module-audio-inline.so
+%endif
+
+# Shared libraries:
+%{_libdir}/evolution/%{evo_base_version}/libcomposer.so
+%{_libdir}/evolution/%{evo_base_version}/libeabutil.so
+%{_libdir}/evolution/%{evo_base_version}/libecontacteditor.so
+%{_libdir}/evolution/%{evo_base_version}/libecontactlisteditor.so
+%{_libdir}/evolution/%{evo_base_version}/libemail-engine.so
+%{_libdir}/evolution/%{evo_base_version}/libemformat.so
+%{_libdir}/evolution/%{evo_base_version}/libeshell.so
+%{_libdir}/evolution/%{evo_base_version}/libessmime.so
+%{_libdir}/evolution/%{evo_base_version}/libeutil.so
+%{_libdir}/evolution/%{evo_base_version}/libevolution-addressbook-importers.so
+%{_libdir}/evolution/%{evo_base_version}/libevolution-calendar.so
+%{_libdir}/evolution/%{evo_base_version}/libevolution-calendar-importers.so
+%{_libdir}/evolution/%{evo_base_version}/libevolution-mail-importers.so
+%{_libdir}/evolution/%{evo_base_version}/libevolution-mail.so
+%{_libdir}/evolution/%{evo_base_version}/libevolution-smime.so
+%{_libdir}/evolution/%{evo_base_version}/libgnomecanvas.so
+
+# Various libexec programs:
+%dir %{_libexecdir}/evolution
+%dir %{_libexecdir}/evolution/%{evo_base_version}
+%{_libexecdir}/evolution/%{evo_base_version}/evolution-addressbook-export
+%{_libexecdir}/evolution/%{evo_base_version}/evolution-alarm-notify
+%{_libexecdir}/evolution/%{evo_base_version}/evolution-backup
+%{_libexecdir}/evolution/%{evo_base_version}/killev
+
+# The plugin directory:
+%dir %{evo_plugin_dir}
+
+# The various plugins follow; they are all part of the main package:
+# (note that there are various resources such as ui and pixmap files that
+# are built as part of specific plugins but which are currently packaged using
+# globs above; the purpose of the separation below is to be more explicit about
+# which plugins we ship)
+%{evo_plugin_dir}/org-gnome-evolution-attachment-reminder.eplug
+%{evo_plugin_dir}/liborg-gnome-evolution-attachment-reminder.so
+
+%{evo_plugin_dir}/org-gnome-email-custom-header.eplug
+%{evo_plugin_dir}/liborg-gnome-email-custom-header.so
+
+%{evo_plugin_dir}/org-gnome-evolution-bbdb.eplug
+%{evo_plugin_dir}/liborg-gnome-evolution-bbdb.so
+
+%{evo_plugin_dir}/org-gnome-external-editor.eplug
+%{evo_plugin_dir}/liborg-gnome-external-editor.so
+
+%{evo_plugin_dir}/org-gnome-face.eplug
+%{evo_plugin_dir}/liborg-gnome-face.so
+
+%{evo_plugin_dir}/org-gnome-itip-formatter.eplug
+%{evo_plugin_dir}/liborg-gnome-itip-formatter.so
+
+%{evo_plugin_dir}/org-gnome-mailing-list-actions.eplug
+%{evo_plugin_dir}/liborg-gnome-mailing-list-actions.so
+
+%{evo_plugin_dir}/org-gnome-mail-notification.eplug
+%{evo_plugin_dir}/liborg-gnome-mail-notification.so
+
+%{evo_plugin_dir}/org-gnome-mail-to-task.eplug
+%{evo_plugin_dir}/liborg-gnome-mail-to-task.so
+
+%{evo_plugin_dir}/org-gnome-mark-all-read.eplug
+%{evo_plugin_dir}/liborg-gnome-mark-all-read.so
+
+%{evo_plugin_dir}/org-gnome-prefer-plain.eplug
+%{evo_plugin_dir}/liborg-gnome-prefer-plain.so
+
+%{evo_plugin_dir}/org-gnome-publish-calendar.eplug
+%{evo_plugin_dir}/liborg-gnome-publish-calendar.so
+
+%{evo_plugin_dir}/org-gnome-save-calendar.eplug
+%{evo_plugin_dir}/liborg-gnome-save-calendar.so
+
+%{evo_plugin_dir}/org-gnome-templates.eplug
+%{evo_plugin_dir}/liborg-gnome-templates.so
+
+%{evo_plugin_dir}/org-gnome-dbx-import.eplug
+%{evo_plugin_dir}/liborg-gnome-dbx-import.so
+
+
+%files devel
+%defattr(-, root, root)
+%{_includedir}/evolution-%{evo_base_version}
+%{_libdir}/pkgconfig/evolution-calendar-3.0.pc
+%{_libdir}/pkgconfig/evolution-mail-3.0.pc
+%{_libdir}/pkgconfig/evolution-plugin-3.0.pc
+%{_libdir}/pkgconfig/evolution-shell-3.0.pc
+%{_libdir}/pkgconfig/libemail-engine.pc
+
+%files devel-docs
+%defattr(-,root,root,-)
+%doc %{_datadir}/gtk-doc/html/libeshell
+%doc %{_datadir}/gtk-doc/html/libeutil
+
+%files help -f help.lang
+%defattr(-, root, root)
+%dir %{_datadir}/help/*/evolution
+
+%files bogofilter
+%defattr(-, root, root)
+%{_libdir}/evolution/%{evo_base_version}/modules/module-bogofilter.so
+
+%files spamassassin
+%defattr(-, root, root)
+%{_libdir}/evolution/%{evo_base_version}/modules/module-spamassassin.so
+
+%files perl
+%defattr(-, root, root)
+%{_libexecdir}/evolution/%{evo_base_version}/csv2vcard
+
+%if %{libpst_support}
+%files pst
+%defattr(-, root, root)
+%{evo_plugin_dir}/org-gnome-pst-import.eplug
+%{evo_plugin_dir}/liborg-gnome-pst-import.so
+%endif
+
+%changelog
+* Tue Nov 05 2013 Milan Crha - 3.8.5-9
+- Update patch for RH bug #1026776 (Fix issues found by Coverity Scan introduced by this patch)
+
+* Tue Nov 05 2013 Milan Crha - 3.8.5-8
+- Add patch for RH bug #1026776 (Recurring event move/copy to other calendar breaks recurrence)
+
+* Thu Oct 17 2013 Milan Crha - 3.8.5-7
+- Disabled modification of .po files before build (it causes multilib issues,
+ though a disadvantage is a larger evolution package)
+- Add patch for RH bug #965696 (Signature/encryption bar may not inherit text color from theme)
+
+* Thu Oct 10 2013 Milan Crha - 3.8.5-6
+- Remove the dependency on libytnef, which apparently isn't needed for the
+ PST importer and we don't build the experimental TNEF attachments plugin
+- Update patch for RH bug #962756 (F1 launches help when evolution-help is not installed)
+- Add patch for RH bug #864904 (Auto-wrap long anchors in message preview)
+
+* Wed Oct 09 2013 Milan Crha - 3.8.5-5
+- Add patch for RH bug #948321 (Custom message for alert is not displayed)
+
+* Thu Oct 03 2013 Milan Crha - 3.8.5-4
+- Rebuild for multilib regression in translation files
+
+* Tue Sep 24 2013 Milan Crha - 3.8.5-3
+- Remove explicit Requires on libpst in pst subpackage
+
+* Fri Aug 23 2013 Milan Crha - 3.8.5-2
+- Split developer documentation into evolution-devel-docs subpackage
+
+* Mon Aug 12 2013 Milan Crha - 3.8.5-1
+- Update to 3.8.5
+- Add patch for RH bug #995516 (Crash in certificate viewer)
+
+* Wed Jul 24 2013 Milan Crha - 3.8.4-1
+- Update to 3.8.4
+
+* Sat Jun 22 2013 Matthias Clasen - 3.8.3-2
+- Don't install ChangeLog
+- Trim %%changelog
+
+* Mon Jun 10 2013 Milan Crha - 3.8.3-1
+- Update to 3.8.3
+
+* Sun May 12 2013 Matthew Barnes - 3.8.2-1
+- Update to 3.8.2
+
+* Sun Apr 14 2013 Matthew Barnes - 3.8.1-1
+- Update to 3.8.1
+
+* Mon Mar 25 2013 Milan Crha - 3.8.0-1
+- Update to 3.8.0
+
+* Mon Mar 18 2013 Milan Crha - 3.7.92-1
+- Update to 3.7.92
+
+* Mon Mar 04 2013 Milan Crha - 3.7.91-1
+- Update to 3.7.91
+
+* Wed Feb 20 2013 Kalev Lember - 3.7.90-2
+- Rebuilt for libgnome-desktop soname bump
+
+* Mon Feb 18 2013 Milan Crha - 3.7.90-1
+- Update to 3.7.90
+
+* Mon Feb 04 2013 Milan Crha - 3.7.5-1
+- Update to 3.7.5
+
+* Fri Jan 18 2013 Milan Crha - 3.7.4-1
+- Correct help-context patch test path (Red Had bug #901341)
+
+* Mon Jan 14 2013 Milan Crha - 3.7.4-1
+- Update to 3.7.4
+- Add --add-missing to automake call
+
+* Tue Jan 01 2013 Matthew Barnes - 3.7.3.2-3
+- Re-enable translation size reduction (RH bug #628073 is long fixed).
+
+* Thu Dec 20 2012 Kalev Lember - 3.7.3.2-2
+- Rebuilt for libgnome-desktop3 3.7.3 soname bump
+
+* Wed Dec 19 2012 Matthew Barnes - 3.7.3.2-1
+- Update to 3.7.3.2
+- Remove obsolete BuildRequires:
+ bison
+ dbus-glib-devel
+ libSM-devel
+ rarian-compat
+
+* Mon Nov 19 2012 Milan Crha - 3.7.2-1
+- Update to 3.7.2
+
+* Fri Nov 09 2012 Matthew Barnes - 3.7.1-2
+- Drop unique3-devel BR, it's an ancient artifact.
+
+* Mon Oct 22 2012 Milan Crha - 3.7.1-1
+- Update to 3.7.1
+
+* Mon Sep 24 2012 Matthew Barnes - 3.6.0-1
+- Update to 3.6.0
+- Remove patch for GNOME #678408 (fixed upstream).
+
+* Mon Sep 24 2012 Bastien Nocera 3.5.92-4
+- Use GStreamer 1.0 instead of 0.10
+
+* Sat Sep 22 2012 Adam Williamson - 3.5.92-3
+- backport fix for BGO #678408 (broken message display)
+
+* Wed Sep 19 2012 Kalev Lember - 3.5.92-2
+- Fix evolution-NetworkManager obsoletes
+
+* Mon Sep 17 2012 Milan Crha - 3.5.92-1
+- Update to 3.5.92
+
+* Mon Sep 03 2012 Milan Crha - 3.5.91-1
+- Update to 3.5.91
+
+* Mon Aug 20 2012 Milan Crha - 3.5.90-1
+- Update to 3.5.90
+- Remove patches for BGO #678408 and #681321 (fixed upstream)
+- Add itstool and yelp-tools into BuildRequires
+
+* Wed Aug 15 2012 Adam Williamson - 3.5.5-2
+- backport the fix for BGO #678408 and #681321 (libxml2 build)
+
+* Mon Aug 06 2012 Milan Crha - 3.5.5-1
+- Update to 3.5.5
+
+* Thu Jul 19 2012 Fedora Release Engineering - 3.5.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Mon Jul 16 2012 Milan Crha - 3.5.4-1
+- Update to 3.5.4
+- Enable weather plugin (fixed upstream)
+
+* Wed Jun 27 2012 Matthias Clasen - 2.5.3.1-4
+- Temporarily disable weather plugin (not ported to new libgweather yet)
+
+* Tue Jun 26 2012 Matthew Barnes - 2.5.3.1-3
+- Temporarily change e-d-s req in devel subpackage.
+
+* Tue Jun 26 2012 Matthew Barnes - 3.5.3.1-2
+- Remove unnecessary Requires: evolution-data-server.
+
+* Mon Jun 25 2012 Matthew Barnes - 3.5.3.1-1
+- Update to 3.5.3.1 (3.5.3, no build for you!)
+
+* Mon Jun 25 2012 Matthew Barnes - 3.5.3-1
+- Update to 3.5.3
+- Drop BR: GConf2-devel \o/
+
+* Fri Jun 8 2012 Matthias Clasen - 3.5.2-2
+- Rebuild against new gnome-desktop
+
+* Mon Jun 04 2012 Milan Crha - 3.5.2-1
+- Update to 3.5.2
+
+* Sun Apr 29 2012 Matthew Barnes - 3.5.1-1
+- Update to 3.5.1
+- Add BR: webkitgtk3-devel
+
+* Tue Apr 24 2012 Kalev Lember - 3.4.1-2
+- Silence rpm scriptlet output
+
+* Mon Apr 16 2012 Milan Crha - 3.4.1-1
+- Update to 3.4.1
+
+* Tue Mar 27 2012 Milan Crha - 3.4.0.1-1
+- Update to 3.4.0.1
+
+* Mon Mar 19 2012 Milan Crha - 3.3.92-1
+- Update to 3.3.92
+
+* Tue Mar 06 2012 Milan Crha - 3.3.91-1
+- Update to 3.3.91
+
+* Mon Feb 20 2012 Milan Crha - 3.3.90-1
+- Update to 3.3.90
+
+* Mon Feb 06 2012 Milan Crha - 3.3.5-1
+- Update to 3.3.5
+
+* Thu Jan 19 2012 Matthew Barnes - 3.3.4-2
+- Keep all GSettings schema files in the main evolution package, even the
+ ones for the Bogofilter and Spamassassin subpackages, since we just have
+ one .convert file and missing schemas makes gsettings-data-convert crash.
+
+* Mon Jan 16 2012 Milan Crha - 3.3.4-1
+- Update to 3.3.4
+
+* Fri Jan 13 2012 Fedora Release Engineering - 3.3.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Mon Dec 19 2011 Milan Crha - 3.3.3-1
+- Update to 3.3.3
+
+* Mon Nov 21 2011 Milan Crha - 3.3.2-1
+- Update to 3.3.2
+- Remove patch to not call g_thread_init() (fixed upstream)
+
+* Fri Oct 28 2011 Matthew Barnes - 3.3.1-2
+- Fix detection of evolution-help (not using OMF files anymore).
+
+* Mon Oct 24 2011 Milan Crha - 3.3.1-1
+- Update to 3.3.1
+- Add patch to not call g_thread_init()
+
+* Mon Sep 26 2011 Milan Crha - 3.2.0-1
+- Update to 3.2.0
+- Manage properly schemas files for evolution-bogofilter/spamassassin
+
+* Mon Sep 19 2011 Milan Crha - 3.1.92-1
+- Update to 3.1.92
+
+* Mon Sep 05 2011 Milan Crha - 3.1.91-1
+- Update to 3.1.91
+
+* Mon Aug 29 2011 Milan Crha - 3.1.90-1
+- Update to 3.1.90
+
+* Mon Aug 15 2011 Milan Crha - 3.1.5-1
+- Update to 3.1.5
+
+* Sat Jul 23 2011 Matthew Barnes - 3.1.4-1
+- Update to 3.1.4
+
+* Mon Jul 04 2011 Matthew Barnes - 3.1.3-1
+- Update to 3.1.3
+- Remove patch for building against libgdata-0.9.0 (fixed upstream).
+
+* Wed Jun 15 2011 Milan Crha - 3.1.2-2
+- Rebuild against newer gnome-desktop3
+
+* Tue Jun 14 2011 Milan Crha - 3.1.2-1
+- Update to 3.1.2
+- Add patch by Philip Withnall to build against libgdata-0.9.0
+- Add patch to enable GLib deprecated stuff (due to G_CONST_RETURN deprecation)
+
+* Tue May 17 2011 Milan Crha - 3.1.1-3
+- Keep libevolution-mail-settings.so* from the previous change,
+ it is still used by other parts of evolution.
+
+* Mon May 09 2011 Matthew Barnes - 3.1.1-2
+- Drop the "Email Settings" capplet.
+
+* Mon May 09 2011 Milan Crha - 3.1.1-1
+- Update to 3.1.1
+- Drop groupwise plugin, as it was split out upstream
+
+* Mon Apr 04 2011 Milan Crha - 3.0.0-1
+- Update to 3.0.0
+
+* Mon Mar 21 2011 Milan Crha - 2.91.92-1
+- Update to 2.91.92
+
+* Mon Mar 14 2011 Matthew Barnes - 2.91.91-3
+- Remove some unnecessary BuildRequires:
+ gtkimageview-devel: No release available for gtk3.
+ libgnomecanvas-devel: Evolution bundles its own libgnomecanvas now.
+
+* Fri Mar 11 2011 Matthew Barnes - 2.91.91-2
+- Split off an evolution-NetworkManager subpackage containing the NM
+ integration module. Users that choose to bypass NetworkManager can
+ uninstall this subpackage so Evolution doesn't insist it's offline.
+
+* Mon Mar 07 2011 Milan Crha - 2.91.91-1
+- Update to 2.91.91
+
+* Mon Feb 21 2011 Milan Crha - 2.91.90-1
+- Update to 2.91.90
+
+* Fri Feb 11 2011 Matthew Barnes - 2.91.6.2-1
+- Update to 2.91.6.2
+- Fixes build breakage when using GTK+ 3.0.
+
+* Tue Feb 08 2011 Fedora Release Engineering - 2.91.6.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Tue Feb 08 2011 Matthew Barnes - 2.91.6.1-2
+- Evolution uses gtk3 now; re-enable libnotify.
+
+* Wed Feb 2 2011 Matthias Clasen - 2.91.6.1-1
+- Update to 2.91.6.1
+
+* Mon Jan 31 2011 Milan Crha - 2.91.6-1
+- Update to 2.91.6
+- Require gtk3
+- Remove patch for Red Hat bug #657254 (fixed upstream)
+
+* Fri Jan 21 2011 Dan Williams - 2.91.5-4
+- Fix crash at shutdown by finishing tasks before cleaning up (rh #657254)
+
+* Tue Jan 18 2011 Matthias Clasen - 2.91.5-3
+- Rebuild against newer libgdata
+
+* Thu Jan 13 2011 Matthias Clasen - 2.91.5-2
+- Drop gnome-themes dependency
+
+* Mon Jan 10 2011 Milan Crha - 2.91.5-1
+- Update to 2.91.5
+
+* Mon Dec 20 2010 Milan Crha - 2.91.4-1
+- Update to 2.91.4
+
+* Mon Nov 29 2010 Milan Crha - 2.91.3-1
+- Update to 2.91.3
+- Remove patch for Red Hat bug #176400 (fixed upstream)
+
+* Mon Nov 08 2010 Milan Crha - 2.91.2-1
+- Update to 2.91.2
+
+* Fri Nov 05 2010 Milan Crha - 2.91.1-3
+- Rebuild against newer libxml2
+- Disable libnotify, it's gtk3 only, but evolution is not
+
+* Wed Nov 3 2010 Matthias Clasen - 2.91.1-2
+- Rebuild against new libnotify
+
+* Mon Oct 18 2010 Milan Crha - 2.91.1-1
+- Update to 2.91.1
+
+* Mon Oct 11 2010 Milan Crha - 2.91.0-1
+- Update to 2.91.0
+- Remove patch for Gnome bug #626066 (fixed upstream)
+
+* Wed Sep 29 2010 jkeating - 2.31.92-3
+- Rebuilt for gcc bug 634757
+
+* Tue Sep 14 2010 Milan Crha - 2.31.92-2.fc15
+- Add patch for Gnome bug #626066 (login to NSS on demand)
+
+* Mon Sep 13 2010 Milan Crha - 2.31.92-1.fc15
+- Update to 2.31.92
+
+* Mon Aug 30 2010 Milan Crha - 2.31.91-1.fc14
+- Update to 2.31.91
+- Remove msgmerge calls due to a floating point exception there
+
+* Mon Aug 16 2010 Matthew Barnes - 2.31.90-1.fc14
+- Update to 2.31.90
+
+* Fri Aug 06 2010 Matthew Barnes - 2.31.6-2.fc14
+- Fix handling of migrated signature files.
+
+* Tue Aug 03 2010 Matthew Barnes - 2.31.6-1.fc14
+- Update to 2.31.6
+- Drop dbus-glib requirement.
+- Bump glib2 requirement to 2.25.12.
+- Roll back evo_base_version to 2.32.
+- Add clutter-gtk requirement (for express mode).
+- Remove gtk-compat macro patch (fixed upstream).
+
+* Thu Jul 22 2010 Matthew Barnes - 2.31.5-2.fc14
+- Add patch to fix startup crash in gtk-compat macros.
+
+* Tue Jul 13 2010 Milan Crha - 2.31.5-1.fc14
+- Update to 2.31.5
+- Remove 'conduit' (removed upstream)
+
+* Mon Jun 07 2010 Milan Crha - 2.31.3-1.fc14
+- Update to 2.31.3
+
+* Fri May 28 2010 Matthew Barnes - 2.31.2-2.fc14
+- Evolution Express supercedes Anjal.
+- No need to undefine GNOME_DISABLE_DEPRECATED.
+- Remove nntp_support flag; that got moved to E-D-S ages ago.
+- Remove exchange_support flag; it's all in evolution-exchange now.
+
+* Mon May 24 2010 Milan Crha - 2.31.2-1.fc14
+- Update to 2.31.2
+- Bump gtkhtml3 requirement to 3.31.2
+
+* Fri May 07 2010 Matthew Barnes - 2.31.1-2.fc14
+- Require yelp in evolution-help (RH bug #589555).
+- Add patch for RH bug #589555 (hide Help->Contents if evolution-help
+ is not installed).
+
+* Mon May 03 2010 Milan Crha - 2.31.1-1.fc14
+- Update to 2.31.1
+
+* Tue Feb 09 2010 Milan Crha - 2.29.90-2.fc13
+- Rebuild against evolution-data-server-2.29.90-3
+
+* Mon Feb 08 2010 Milan Crha - 2.29.90-1.fc13
+- Update to 2.29.90
+- Removed unneeded BuildRequires.
+
+* Fri Jan 29 2010 Matthew Barnes - 2.29.6-2.fc13
+- Bump gtkhtml3 requirement to 3.29.6.
+
+* Mon Jan 25 2010 Milan Crha - 2.29.6-1.fc13
+- Update to 2.29.6
+- Remove patch for Gnome bug #606874 (fixed upstream).
+- Add rarian-compat to BuildRequires for Scrollkeeper.
+
+* Mon Jan 18 2010 Matthias Clasen - 2.29.5-2.fc13
+- Rebuild against new gnome-desktop
+
+* Tue Jan 12 2010 Milan Crha - 2.29.5-1.fc13
+- Update to 2.29.5
+- Add patch for Gnome bug #606874 (mktemp removed in glibc-2.11.90-8)
+
+* Tue Dec 22 2009 Matthew Barnes - 2.29.4-2.fc13
+- Update Scrollkeeper and Icon Cache scriptlets to conform to guidelines.
+ (see: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets)
+
+* Mon Dec 21 2009 Milan Crha - 2.29.4-1.fc13
+- Update to 2.29.4
+- Remove patch for missing m4 files from tarball (fixed upstream).
+
+* Mon Nov 30 2009 Milan Crha - 2.29.3-1.fc13
+- Update to 2.29.3
+- Add patch for missing m4 files from tarball.
+- Disable autoreconf call.
+
+* Tue Nov 17 2009 Matthew Barnes - 2.29.2-1.fc13
+- Update to 2.29.2
+- Synchronize spec file with my kill-bonobo test package.
+
+* Tue Oct 27 2009 Matthew Barnes - 2.29.1-1.fc13
+- Update to 2.29.1
+- Bump evo_major to 2.30.
+- Drop Bonobo + ORBit dependency (yay!).
+- Remove option to use OpenSSL instead of NSS.
+- Uninstall GConf schemas during %%pre and %%preun.
+
+* Mon Sep 21 2009 Milan Crha - 2.28.0-1.fc12
+- Update to 2.28.0
+
+* Mon Sep 07 2009 Milan Crha - 2.27.92-1.fc12
+- Update to 2.27.92
+
+* Mon Aug 24 2009 Milan Crha - 2.27.91-1.fc12
+- Update to 2.27.91
+- Remove patch for GNOME bug #591414 (fixed upstream).
+
+* Fri Aug 14 2009 Matthew Barnes - 2.27.90-3.fc12
+- Add patch for GNOME bug #591414 (calendar library linked as module).
+
+* Tue Aug 11 2009 Milan Crha - 2.27.90-2.fc12
+- Build requires gnome-desktop-devel >= 2.26
+- New library libevolution-cal-shared.so
+
+* Mon Aug 10 2009 Milan Crha - 2.27.90-1.fc12
+- Update to 2.27.90
+
+* Tue Jul 28 2009 Milan Crha - 2.27.5-3.fc12
+- Enable pst-import plugin (RH bug #493049)
+
+* Tue Jul 28 2009 Matthew Barnes - 2.27.5-2.fc12
+- Move libeconduit.so into the conduits subpackage to see if that
+ untangles us from gnome-pilot.
+
+* Mon Jul 27 2009 Milan Crha - 2.27.5-1.fc12
+- Update to 2.27.5
+- Remove pst import plugin patch (fixed upstream).
+- Remove work around deprecation of g_mount_unmount (fixed upstream).
+
+* Fri Jul 24 2009 Fedora Release Engineering - 2.27.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Mon Jul 13 2009 Matthew Barnes - 2.27.4-1.fc12
+- Update to 2.27.4
+- Work around deprecation of g_mount_unmount().
+
+* Fri Jul 10 2009 Matthew Barnes - 2.27.3-5.fc11
+- Add an evolution-pst subpackage for the PST importer plugin.
+- Disabled until libpst settles on an API.
+
+* Thu Jul 02 2009 Matthew Barnes - 2.27.3-4.fc12
+- Add BR for libpst-devel and libytnef-devel (RH bug #493049).
+- Add patch to build pst-import plugin against current libpst.
+- libpst's API broke again so disable the BR's for now.
+- Specify the gettext package when calling intltool-update.
+
+* Wed Jul 01 2009 Milan Crha - 2.27.3-3.fc12
+- Rebuild against newer gcc
+
+* Tue Jun 23 2009 Matthew Barnes - 2.27.3-2.fc12
+- Add patch to allow Anjal to build.
+
+* Mon Jun 15 2009 Matthew Barnes - 2.27.3-1.fc12
+- Update to 2.27.3
+
+* Sun Jun 14 2009 Matthias Clasen - 2.27.2-2.fc12
+- Don't make -perl own directories that are already owned by the base package
+
+* Mon May 29 2009 Matthew Barnes - 2.27.2-1.fc12
+- Update to 2.27.2
+- Patch broken libevolution-mail-shared library.
+- Remove strict_build_settings since the settings are used upstream now.
+
+* Mon May 04 2009 Matthew Barnes - 2.27.1-1.fc12
+- Update to 2.27.1
+- Bump evo_major to 2.28.
+- Temporarily disable EDS_DISABLE_DEPRECATED due to GNOME bug #569652.
+
+* Mon Apr 27 2009 Matthias Clasen - 2.26.1-2.fc11
+- Don't drop schemas translations from po files
+
+* Wed Apr 15 2009 Matthew Barnes - 2.26.1.1-1.fc11
+- Update to 2.26.1.1
+- Remove patch for GNOME bug #578685 (fixed upstream).
+
+* Tue Apr 14 2009 Matthew Barnes - 2.26.1-2.fc11
+- Add patch for GNOME bug #578685 (attachment bar crasher).
+
+* Mon Apr 13 2009 Matthew Barnes - 2.26.1-1.fc11
+- Update to 2.26.1
+
+* Fri Apr 10 2009 Matthias Clasen - 2.26.0-3.fc11
+- Fix directory ownership
+
+* Thu Apr 02 2009 Matthew Barnes - 2.26.0-2.fc11
+- Require libpst.
+
+* Mon Mar 16 2009 Matthew Barnes - 2.26.0-1.fc11
+- Update to 2.26.0
+
+* Mon Mar 02 2009 Matthew Barnes - 2.25.92-1.fc11
+- Update to 2.25.92
+
+* Tue Feb 24 2009 Fedora Release Engineering - 2.25.91-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Sun Feb 22 2009 Matthias Clasen - 2.25.91-2.fc11
+- Actually make the help subpackage noarch
+
+* Mon Feb 16 2009 Matthew Barnes - 2.25.91-1.fc11
+- Update to 2.25.91
+
+* Sat Feb 14 2009 Matthias Clasen - 2.25.90-3.fc11
+- Make the help subpackage noarch
+
+* Fri Feb 06 2009 Matthew Barnes - 2.25.90-2.fc11
+- Update BuildRoot, License, Source and URL tags.
+- Require gnome-common so we don't have to patch it out.
+
+* Mon Feb 02 2009 Matthew Barnes - 2.25.90-1.fc11
+- Update to 2.25.90
+
+* Mon Jan 19 2009 Matthew Barnes - 2.25.5-1.fc11
+- Update to 2.25.5
+- Ditch eds_version and use our own version. This will keep evolution
+ and evolution-data-server versions in lockstep from now on.
+
+* Mon Jan 05 2009 Matthew Barnes - 2.25.4-1.fc11
+- Update to 2.25.4
+- Bump eds_version to 2.25.4.
+- Bump libgweather_version to 2.25.4.
+
+* Mon Dec 15 2008 Matthew Barnes - 2.25.3.1-1.fc11
+- Update to 2.25.3.1
+- New BR: libgweather-devel
+- Remove patch for GNOME bug #552583 (fixed upstream).
+- Bump the gtkhtml and gtk2 minimum versions.
+
+* Tue Dec 09 2008 Matthew Barnes - 2.25.2-2.fc11
+- Add patch for GNOME bug #552583 (fix account URI comparisons).
+
+* Mon Dec 01 2008 Matthew Barnes - 2.25.2-1.fc11
+- Update to 2.25.2
+- Bump eds_version to 2.25.2.
+
+* Thu Nov 20 2008 Matthew Barnes - 2.25.1-2.fc11
+- Fix a typo (RH bug #472358).
+
+* Mon Nov 03 2008 Matthew Barnes - 2.25.1-1.fc11
+- Update to 2.25.1
+- Bump evo_major to 2.26.
+- Bump eds_version to 2.25.1.
+
+* Tue Oct 21 2008 Matthew Barnes - 2.24.1-2.fc10
+- Bump eds_version to 2.24.1 (unfortunately).
+
+* Tue Oct 21 2008 Matthew Barnes - 2.24.1-1.fc10
+- Update to 2.24.1
+
+* Wed Oct 8 2008 Matthias Clasen - 2.24.0-3
+- Save space in the -help package by not shipping multiple copies
+ of each screenshot
+
+* Thu Sep 25 2008 Matthew Barnes - 2.24.0-2.fc10
+- Strip unneeded translations from .mo files (RH bug #463887).
+- Split Perl-based utilities into a "perl" subpackage (RH bug #462345).
+
+* Mon Sep 22 2008 Matthew Barnes - 2.24.0-1.fc10
+- Update to 2.24.0
+
+* Mon Sep 08 2008 Matthew Barnes - 2.23.92-1.fc10
+- Update to 2.23.92
+
+* Mon Sep 01 2008 Matthew Barnes - 2.23.91-1.fc10
+- Update to 2.23.91
+- Bump eds_version to 2.23.91
+
+* Mon Aug 25 2008 Matthew Barnes - 2.23.90-2.fc10
+- Bump gtkhtml_version to 3.23.5 (RH bug #460076).
+
+* Wed Aug 20 2008 Matthew Barnes - 2.23.90-1.fc10
+- Update to 2.23.90
+- Bump eds_version to 2.23.90.1
+
+* Mon Aug 04 2008 Matthew Barnes - 2.23.6-1.fc10
+- Update to 2.23.6
+
+* Tue Jul 22 2008 Matthew Barnes - 2.23.5-1.fc10
+- Update to 2.23.5
+- Bump eds_version to 2.23.5.
+
+* Fri Jul 18 2008 Tom "spot" Callaway - 2.23.4-3.fc10
+- fix license tag
+- fix patches to apply with fuzz=0
+
+* Thu Jun 19 2008 Matthew Barnes - 2.23.4-2.fc10
+- Don't ship the unfinished "Custom Header" plugin.
+
+* Mon Jun 16 2008 Matthew Barnes - 2.23.4-1.fc10
+- Update to 2.23.4
+- Remove patches for RH bug #449925 (fixed upstream).
+
+* Fri Jun 06 2008 Matthew Barnes - 2.23.3.1-4.fc10
+- Use a less pretentious summary.
+
+* Fri Jun 06 2008 Matthew Barnes - 2.23.3.1-3.fc10
+- Remove the gnome-spell requirement.
+
+* Wed Jun 04 2008 Matthew Barnes - 2.23.3.1-2.fc10
+- Add patches for RH bug #449925 (buffer overflow vulnerabilities).
+
+* Mon Jun 02 2008 Matthew Barnes - 2.23.3.1-1.fc10
+- Update to 2.23.3.1
+- Bump eds_version to 2.23.3.
+
+* Mon May 12 2008 Matthew Barnes - 2.23.2-1.fc10
+- Update to 2.23.2
+- Remove enchant-devel requirement.
+- Remove patch for RH bug #437208 (fixed upstream).
+
+* Mon Apr 28 2008 Matthew Barnes - 2.23.1-2.fc10
+- Explicitly require enchant-devel, even though I shouldn't need to.
+
+* Mon Apr 21 2008 Matthew Barnes - 2.23.1-1.fc10
+- Update to 2.23.1
+- Bump evo_major to 2.22.
+- Bump eds_version to 2.23.1.
+- Bump glib2_version to 2.16.0.
+- Bump gtkhtml_version to 3.19.1.
+- Add gvfs requirement.
+- Drop gnomevfs2 requirement.
+- Remove patch for RH bug #164957 (obsolete).
+
+* Mon Apr 07 2008 Matthew Barnes - 2.22.1-1.fc9
+- Update to 2.22.1
+- Remove patch for GNOME bug #524310 (fixed upstream).
+
+* Tue Mar 25 2008 Dan Williams - 2.22.0-4.fc9
+- Add patch for GNOME bug #524310
+
+* Fri Mar 14 2008 Matthew Barnes - 2.22.0-3.fc9
+- Explicit require evolution-data-server since its shared object names
+ still can't be trusted (RH bug #426511).
+
+* Fri Mar 14 2008 Matthew Barnes - 2.22.0-2.fc9
+- Add patch for RH bug #437208 (tracking network status).
+
+* Mon Mar 10 2008 Matthew Barnes - 2.22.0-1.fc9
+- Update to 2.22.0
+- Remove patch for CVE-2008-0072 (fixed upstream).
+
+* Tue Mar 04 2008 Matthew Barnes - 2.21.92-2.fc9
+- Add patch for CVE-2008-0072 (format string vulnerability).
+
+* Mon Feb 25 2008 Matthew Barnes - 2.21.92-1.fc9
+- Update to 2.21.92
+- Bump eds_version to 2.21.92.
+
+* Wed Feb 13 2008 Matthew Barnes - 2.21.91-2.fc9
+- Rebuild against libsoup 2.3.2.
+
+* Mon Feb 11 2008 Matthew Barnes - 2.21.91-1.fc9
+- Update to 2.21.91
+- Bump eds_version to 2.21.91.
+- Remove patch for GNOME bug #240073 (fixed upstream).
+
+* Sat Feb 02 2008 Matthew Barnes - 2.21.90-4.fc9
+- Remove some obsolete configure options:
+ --enable-file-chooser, --enable-file-locking, --enable-dot-locking
+- Remove gnome-doc-utils work-around for GNOME bug #427939 (fixed upstream).
+- Remove patch for RH bug #215478 (fixed upstream).
+
+* Tue Jan 29 2008 Matthew Barnes - 2.21.90-3.fc9
+- Add patch to address the recent deprecation of G_GNUC_FUNCTION.
+
+* Tue Jan 29 2008 Matthew Barnes - 2.21.90-2.fc9
+- Add patch for GNOME bug #240073 (don't strikeout Click to Add in tasks).
+
+* Mon Jan 28 2008 Matthew Barnes - 2.21.90-1.fc9
+- Update to 2.21.90
+- Update build requirements.
+- Remove patch for GNOME #363695 (obsolete/problematic).
+- Remove patch for GNOME #509741 (fixed upstream).
+
+* Tue Jan 15 2008 Matthew Barnes - 2.21.5-2.fc9
+- Add patch for GNOME bug #509741 (crash on startup).
+
+* Mon Jan 14 2008 Matthew Barnes - 2.21.5-1.fc9
+- Update to 2.21.5
+- The backup-restore plugin is stable again.
+- Remove patch for RH bug #154360 (fixed upstream).
+- Remove patch for RH bug #166231 (obsolete, possibly fixed upstream).
+- Remove patch for RH bug #178295 (fixed upstream).
+- Remove patch for GNOME bug #362638 (fixed upstream).
+- Remove patch for GNOME bug #504030 (fixed upstream).
+- Remove patch for GNOME bug #507311 (fixed upstream).
+
+* Sat Jan 05 2008 Matthew Barnes - 2.21.4-2.fc9
+- Add patch for GNOME bug #507311 (send Bug Buddy reports to the new
+ BugBuddyBugs Bugzilla component).
+
+* Mon Dec 17 2007 Matthew Barnes - 2.21.4-1.fc9
+- Update to 2.21.4
+- Expunge unused patches.
+- Bump eds_version to 2.21.4 for new Camel functions.
+
+* Mon Dec 10 2007 Matthew Barnes - 2.21.3-4.fc9
+- Split junk filtering plugins into evolution-bogofilter and
+ evolution-spamassassin subpackages, each of which requires the
+ necessary backend packages. (RH bug #377381)
+
+* Mon Dec 05 2007 Matthew Barnes - 2.21.3-3.fc9
+- Bump eds_version to 2.21.3 and gtkhtml_version to 3.17.3.
+
+* Tue Dec 4 2007 Matthias Clasen - 2.21.3-2
+- Rebuild against new openssl
+
+* Mon Dec 03 2007 Matthew Barnes - 2.21.3-1.fc9
+- Update to 2.21.3
+- Remove patch for RH bug #215467 (fixed upstream).
+- Remove patch for GNOME bug #499920 (fixed upstream).
+
+* Sat Dec 01 2007 Matthew Barnes - 2.21.2-4.fc9
+- Fix a corrupted patch that caused GNOME bug #499291.
+
+* Thu Nov 29 2007 Matthew Barnes - 2.21.2-3.fc9
+- Add patch for GNOME bug #499920 (invalid #include).
+
+* Fri Nov 23 2007 Matthew Barnes - 2.21.2-2.fc9
+- Rebuild against newer libpisync.so.
+
+* Mon Nov 12 2007 Matthew Barnes - 2.21.2-1.fc9
+- Update to 2.21.2
+
+* Tue Oct 30 2007 Matthew Barnes - 2.21.1-2.fc9
+- Attempt to split the gnome-pilot stuff into a separate
+ evolution-conduits subpackage (RH bug #178155).
+
+* Mon Oct 29 2007 Matthew Barnes - 2.21.1-1.fc9
+- Update to 2.21.1
+- Remove redundant requirements.
+- Bump EDS requirement to 2.21.1.
+- Bump gtkhtml requirement to 3.17.1.
+- Backup/restore plugin got moved from standard to experimental.
+- Revert the per-component menu items (RH bug #222105, #241462, #293771).
+- Show the switcher buttons by default (RH bug #186403).
+- Alter the desktop file Name and Comment.
+- Disable patch for GNOME bug #376991 for now. It may be contributing
+ to password prompting problems as described in RH bug #296671.
+- Remove patch for GNOME bug #417999 (fixed upstream).
+- Remove patch for GNOME bug #476040 (fixed upstream).
+- Remove patch for GNOME bug #477045 (fixed upstream).
+
+* Mon Oct 15 2007 Matthew Barnes - 2.12.1-2.fc8
+- Fix a broken zoom icon.
+
+* Mon Oct 15 2007 Milan Crha - 2.12.1-1.fc8
+- Update to 2.12.1
+- Add files for the new backup-restore plugin.
+
+* Tue Oct 09 2007 Matthew Barnes - 2.12.0-7.fc8
+- Revise patch for GNOME bug #477045 (more icon tweaks).
+
+* Fri Oct 05 2007 Matthew Barnes - 2.12.0-6.fc8
+- Require libbonobo >= 2.16.0 (RH bug #213823).
+
+* Thu Oct 04 2007 Matthew Barnes - 2.12.0-5.fc8
+- Require gnome-themes (RH bug #235617).
+
+* Wed Oct 03 2007 Matthew Barnes - 2.12.0-4.fc8
+- Revise patch for GNOME bug #477045 (run-time warnings when composing mail).
+
+* Wed Sep 19 2007 Matthew Barnes - 2.12.0-3.fc8
+- Re-enable the inline audio plugin since it now uses GStreamer 0.10.
+
+* Wed Sep 19 2007 Matthew Barnes - 2.12.0-2.fc8
+- Revise patch for GNOME bug #477045 (less-zealous icon renaming).
+
+* Mon Sep 17 2007 Matthew Barnes - 2.12.0-1.fc8
+- Update to 2.12.0
+- Remove patch for RH bug #182247 (fixed upstream).
+
+* Sat Sep 15 2007 Matthew Barnes - 2.11.92-4.fc8
+- Add patch for GNOME bug #477045 (use standard icon names).
+
+* Tue Sep 11 2007 Matthew Barnes - 2.11.92-3.fc8
+- Add patch for GNOME bug #476040 (fix attachment icon).
+
+* Sat Sep 8 2007 Matthias Clasen - 2.11.92-2.fc8
+- Split off an evolution-help package
+
+* Mon Sep 03 2007 Matthew Barnes - 2.11.92-1.fc8
+- Update to 2.11.92
+
+* Wed Aug 29 2007 Matthew Barnes - 2.11.91-3.fc8
+- Revise patch for GNOME bug #362638 to fix GNOME bug #357175
+ (Evolution fails to close after IMAP alert has been displayed).
+
+* Tue Aug 28 2007 Matthew Barnes - 2.11.91-2.fc8
+- Fix compilation breakage caused by our strict build settings.
+
+* Tue Aug 28 2007 Milan Crha - 2.11.91-1.fc8
+- Update to 2.11.91
+- Removed patch for RH bug #157400 / GNOME bug #303877 (fixed upstream).
+- Removed patch for RH bug #157505 / GNOME bug #303878 (fixed upstream).
+- Removed patch for RH bug #161885 / GNOME bug #309166 (fixed upstream).
+- Removed patch for RH bug #202751 / GNOME bug #355766 (fixed upstream).
+- Removed patch for RH bug #218898 / GNOME bug #385414 (fixed upstream).
+- Removed patch for RH bug #253348 / GNOME bug #467883 (fixed upstream).
+
+* Thu Aug 23 2007 Matthew Barnes - 2.11.90-4.fc8
+- Obsolete the evolution-bogofilter package.
+
+* Mon Aug 20 2007 Matthew Barnes - 2.11.90-3.fc8
+- Revise patch for GNOME bug #417999 to fix GNOME bug #447591
+ (Automatic Contacts combo boxes don't work).
+
+* Sat Aug 18 2007 Matthew Barnes - 2.11.90-2.fc8
+- Add patch for RH bug #253348 (crash on startup).
+
+* Wed Aug 15 2007 Matthew Barnes - 2.11.90-1.fc8
+- Update to 2.11.90
+
+* Wed Aug 8 2007 Matthias Clasen - 2.11.6.1-2
+- Update the license field
+- Use %%find_lang for help files
+
+* Wed Aug 01 2007 Matthew Barnes - 2.11.6.1-1.fc8
+- Update to 2.11.6.1
+
+* Tue Jul 31 2007 Matthew Barnes - 2.11.6-1.fc8
+- Update to 2.11.6
+- Remove patch for GNOME bug #380534 (fixed upstream).
+
+* Fri Jul 27 2007 Matthew Barnes - 2.11.5-3.fc8
+- Add patch for GNOME bug #380534 (clarify version requirements).
+
+* Mon Jul 16 2007 Matthew Barnes - 2.11.5-2.fc8
+- Remove spamassassin requirement since it's optional.
+
+* Fri Jul 13 2007 Matthew Barnes - 2.11.5-1.fc8
+- Update to 2.11.5
+- Revise patch for GNOME bug #362638 to fix RH bug #245695.
+
+* Wed Jun 27 2007 Matthew Barnes - 2.11.4-2.fc8
+- Revise patch for GNOME bug #363638 to fix RH bug #245289 (frequent hangs).
+
+* Mon Jun 18 2007 Matthew Barnes - 2.11.4-1.fc8
+- Update to 2.11.4
+- Remove patch for GNOME bug #447727 (fixed upstream).
+
+* Thu Jun 14 2007 Matthew Barnes - 2.11.3-5.fc8
+- Add patch for GNOME bug #447727 (remove EClippedLabel).
+
+* Wed Jun 06 2007 Matthew Barnes - 2.11.3-4.fc8
+- Revise patch for GNOME bug #362638 to fix RH bug #240507 (hang on exit).
+
+* Wed Jun 06 2007 Matthew Barnes - 2.11.3-3.fc8
+- Remove some debug messages that accidentally slipped in.
+
+* Tue Jun 05 2007 Matthew Barnes - 2.11.3-2.fc8
+- Fix an invalid g_free() that was causing lock-ups.
+
+* Mon Jun 04 2007 Matthew Barnes - 2.11.3-1.fc8
+- Update to 2.11.3
+- Evolution no longer has versioned file names.
+- Remove patch for RH bug #202289 (fixed upstream).
+- Remove patch for RH bug #235878 (fixed upstream).
+- Remove patch for RH bug #238155 (fixed upstream).
+- Remove patch for RH bug #240147 (fixed upstream).
+
+* Thu May 31 2007 Matthew Barnes - 2.11.2-2.fc8
+- Evolution no longer requires libgnomeprint[ui].
+
+* Fri May 18 2007 Matthew Barnes - 2.11.2-1.fc8
+- Update to 2.11.2
+- Bump evo_major to 2.12.
+- Bump eds_version to 1.11.0.
+- Update files with new plugins and icons.
+- Remove patch for RH bug #190359 (fixed upstream).
+- Remove patch for RH bug #218801 (fixed upstream).
+- Remove patch for RH bug #234315 (fixed upstream).
+- Remove patch for RH bug #236399 (fixed upstream).
+- Remove patch for RH bug #236860 (fixed upstream).
+- Remove patch for RH bug #238551 (fixed upstream).
+- Remove patch for GNOME bug #373837 (fixed upstream).
+- Remove patch for GNOME bug #373116 (fixed upstream).
+- Remove patch for GNOME bug #418971 (fixed upstream).
+- Remove patch for GNOME bug #419469 (fixed upstream).
+- Remove patch for GNOME bug #419524 (fixed upstream).
+- Remove evolution-2.6.0-prototypes.patch (obsolete).
+
+* Wed May 16 2007 Matthew Barnes - 2.10.1-17.fc7
+- Revise patch for GNOME bug #362638 to fix RH bug #237206
+ (certificate prompt causes crash, again).
+
+* Tue May 15 2007 Matthew Barnes - 2.10.1-16.fc7
+- Add patch for RH bug #240147 (Send/Receive dialog layout).
+
+* Mon May 14 2007 Matthew Barnes - 2.10.1-15.fc7
+- Revise patch for RH bug #236860 to match upstream's solution.
+
+* Mon May 14 2007 Matthew Barnes