From 1341a56ed1347f0762e9d81f4cfc6197c1656f0b Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 25 Feb 2010 13:32:32 +0100 Subject: Bug #529331 - Deletes appointments when moving to the same calendar --- modules/calendar/e-cal-shell-view-actions.c | 22 ++++++++++++++++++---- modules/calendar/e-cal-shell-view-private.c | 5 +++-- 2 files changed, 21 insertions(+), 6 deletions(-) (limited to 'modules/calendar') diff --git a/modules/calendar/e-cal-shell-view-actions.c b/modules/calendar/e-cal-shell-view-actions.c index 03a6eb6bd3..4e80a99db2 100644 --- a/modules/calendar/e-cal-shell-view-actions.c +++ b/modules/calendar/e-cal-shell-view-actions.c @@ -507,7 +507,7 @@ action_event_copy_cb (GtkAction *action, GnomeCalendarViewType view_type; GnomeCalendar *calendar; ECalendarView *calendar_view; - ESource *destination_source = NULL; + ESource *source_source = NULL, *destination_source = NULL; ECal *destination_client = NULL; GList *selected, *iter; @@ -522,9 +522,16 @@ action_event_copy_cb (GtkAction *action, selected = e_calendar_view_get_selected_events (calendar_view); g_return_if_fail (selected != NULL); + if (selected->data) { + ECalendarViewEvent *event = selected->data; + + if (event && event->comp_data && event->comp_data->client) + source_source = e_cal_get_source (event->comp_data->client); + } + /* Get a destination source from the user. */ destination_source = select_source_dialog ( - GTK_WINDOW (shell_window), E_CAL_SOURCE_TYPE_EVENT); + GTK_WINDOW (shell_window), E_CAL_SOURCE_TYPE_EVENT, source_source); if (destination_source == NULL) return; @@ -762,7 +769,7 @@ action_event_move_cb (GtkAction *action, GnomeCalendarViewType view_type; GnomeCalendar *calendar; ECalendarView *calendar_view; - ESource *destination_source = NULL; + ESource *source_source = NULL, *destination_source = NULL; ECal *destination_client = NULL; GList *selected, *iter; @@ -777,9 +784,16 @@ action_event_move_cb (GtkAction *action, selected = e_calendar_view_get_selected_events (calendar_view); g_return_if_fail (selected != NULL); + if (selected->data) { + ECalendarViewEvent *event = selected->data; + + if (event && event->comp_data && event->comp_data->client) + source_source = e_cal_get_source (event->comp_data->client); + } + /* Get a destination source from the user. */ destination_source = select_source_dialog ( - GTK_WINDOW (shell_window), E_CAL_SOURCE_TYPE_EVENT); + GTK_WINDOW (shell_window), E_CAL_SOURCE_TYPE_EVENT, source_source); if (destination_source == NULL) return; diff --git a/modules/calendar/e-cal-shell-view-private.c b/modules/calendar/e-cal-shell-view-private.c index b5f9ba55d7..e5c1ed4bd6 100644 --- a/modules/calendar/e-cal-shell-view-private.c +++ b/modules/calendar/e-cal-shell-view-private.c @@ -737,8 +737,9 @@ e_cal_shell_view_transfer_item_to (ECalShellView *cal_shell_view, success = e_cal_modify_object ( destination_client, icalcomp_event, CALOBJ_MOD_ALL, NULL); - if (!success) - return; + + /* do not delete the event when it was found in the calendar */ + return; } else { icalproperty *icalprop; gchar *new_uid; -- cgit