From 09e7cfcd0d578ea88b31ce39d50f27ad76974ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Fri, 12 Jul 2013 14:48:38 +0200 Subject: Bug #703899 - Moving a meeting does not ask for confirmation --- calendar/gui/e-day-view.c | 85 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 14 deletions(-) (limited to 'calendar/gui/e-day-view.c') diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 6dae27fa18..6ad72a5765 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -42,6 +42,7 @@ #include "dialogs/cancel-comp.h" #include "dialogs/recur-comp.h" #include "dialogs/goto-dialog.h" +#include "dialogs/save-comp.h" #include "calendar-config.h" #include "comp-util.h" @@ -4788,6 +4789,10 @@ e_day_view_finish_resize (EDayView *day_view) ESourceRegistry *registry; CalObjModType mod = CALOBJ_MOD_ALL; GtkWindow *toplevel; + GtkResponseType send = GTK_RESPONSE_NO; + gboolean modified; + gboolean only_new_attendees = FALSE; + gboolean strip_alarms = TRUE; model = e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)); registry = e_cal_model_get_registry (model); @@ -4822,6 +4827,18 @@ e_day_view_finish_resize (EDayView *day_view) return; } + toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view))); + + if ((itip_organizer_is_user (registry, comp, client) || + itip_sentby_is_user (registry, comp, client))) + send = send_dragged_or_resized_component_dialog ( + toplevel, client, comp, &strip_alarms, &only_new_attendees); + + if (send == GTK_RESPONSE_CANCEL) { + e_day_view_abort_resize (day_view); + goto out; + } + date.value = &itt; date.tzid = icaltimezone_get_tzid (e_calendar_view_get_timezone (E_CALENDAR_VIEW (day_view))); @@ -4854,7 +4871,7 @@ e_day_view_finish_resize (EDayView *day_view) if (e_cal_component_has_recurrences (comp)) { if (!recur_component_dialog (client, comp, &mod, NULL, FALSE)) { - gtk_widget_queue_draw (day_view->top_canvas); + gtk_widget_queue_draw (day_view->main_canvas); goto out; } @@ -4883,13 +4900,14 @@ e_day_view_finish_resize (EDayView *day_view) } else if (e_cal_component_is_instance (comp)) mod = CALOBJ_MOD_THIS; - toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view))); - e_cal_component_commit_sequence (comp); - e_calendar_view_modify_and_send ( - E_CALENDAR_VIEW (day_view), - comp, client, mod, toplevel, TRUE); + modified = e_calendar_view_modify (E_CALENDAR_VIEW (day_view), comp, client, mod); + + if (modified && send == GTK_RESPONSE_YES) + e_calendar_view_send ( + E_CALENDAR_VIEW (day_view), + comp, client, mod, toplevel, strip_alarms, only_new_attendees); out: g_object_unref (comp); @@ -8339,6 +8357,10 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget, const guchar *data; gint format, length; gint days_shown; + GtkResponseType send = GTK_RESPONSE_NO; + gboolean modified; + gboolean only_new_attendees = FALSE; + gboolean strip_alarms = TRUE; data = gtk_selection_data_get_data (selection_data); format = gtk_selection_data_get_format (selection_data); @@ -8426,6 +8448,19 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget, return; } + toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view))); + + if ((itip_organizer_is_user (registry, comp, client) || + itip_sentby_is_user (registry, comp, client))) + send = send_dragged_or_resized_component_dialog ( + toplevel, client, comp, &strip_alarms, &only_new_attendees); + + if (send == GTK_RESPONSE_CANCEL) { + e_day_view_abort_resize (day_view); + g_object_unref (comp); + return; + } + if (start_offset == 0 && end_offset == 0) all_day_event = TRUE; else @@ -8477,6 +8512,7 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget, e_cal_component_commit_sequence (comp); if (e_cal_component_has_recurrences (comp)) { if (!recur_component_dialog (client, comp, &mod, NULL, FALSE)) { + gtk_widget_queue_draw (day_view->top_canvas); g_object_unref (comp); return; } @@ -8493,11 +8529,13 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget, } else if (e_cal_component_is_instance (comp)) mod = CALOBJ_MOD_THIS; - toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view))); - e_calendar_view_modify_and_send ( - E_CALENDAR_VIEW (day_view), - comp, client, mod, toplevel, FALSE); + modified = e_calendar_view_modify (E_CALENDAR_VIEW (day_view), comp, client, mod); + + if (modified && send == GTK_RESPONSE_YES) + e_calendar_view_send ( + E_CALENDAR_VIEW (day_view), + comp, client, mod, toplevel, strip_alarms, only_new_attendees); g_object_unref (comp); @@ -8603,6 +8641,10 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget, gboolean drag_from_same_window; const guchar *data; gint format, length; + GtkResponseType send = GTK_RESPONSE_NO; + gboolean modified; + gboolean only_new_attendees = FALSE; + gboolean strip_alarms = TRUE; cal_view = E_CALENDAR_VIEW (day_view); model = e_calendar_view_get_model (cal_view); @@ -8693,6 +8735,19 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget, return; } + toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view))); + + if ((itip_organizer_is_user (registry, comp, client) || + itip_sentby_is_user (registry, comp, client))) + send = send_dragged_or_resized_component_dialog ( + toplevel, client, comp, &strip_alarms, &only_new_attendees); + + if (send == GTK_RESPONSE_CANCEL) { + e_day_view_abort_resize (day_view); + g_object_unref (comp); + return; + } + date.value = &itt; date.tzid = icaltimezone_get_tzid (e_calendar_view_get_timezone (E_CALENDAR_VIEW (day_view))); @@ -8719,6 +8774,7 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget, e_cal_component_commit_sequence (comp); if (e_cal_component_has_recurrences (comp)) { if (!recur_component_dialog (client, comp, &mod, NULL, FALSE)) { + gtk_widget_queue_draw (day_view->main_canvas); g_object_unref (comp); return; } @@ -8735,11 +8791,12 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget, } else if (e_cal_component_is_instance (comp)) mod = CALOBJ_MOD_THIS; - toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view))); + modified = e_calendar_view_modify (E_CALENDAR_VIEW (day_view), comp, client, mod); - e_calendar_view_modify_and_send ( - E_CALENDAR_VIEW (day_view), - comp, client, mod, toplevel, FALSE); + if (modified && send == GTK_RESPONSE_YES) + e_calendar_view_send ( + E_CALENDAR_VIEW (day_view), + comp, client, mod, toplevel, strip_alarms, only_new_attendees); g_object_unref (comp); -- cgit v1.2.3