aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog15
-rw-r--r--calendar/gui/comp-util.c32
-rw-r--r--calendar/gui/comp-util.h11
-rw-r--r--calendar/gui/e-day-view.c51
-rw-r--r--calendar/gui/e-week-view.c47
5 files changed, 49 insertions, 107 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index a729739271..6ffc860a84 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,5 +1,20 @@
2002-09-20 JP Rosevear <jpr@ximian.com>
+ * gui/comp-util.c (cal_comp_is_on_server): check to see if the
+ component is already on the server or not
+
+ * gui/comp-util.h: change proto
+
+ * gui/e-week-view.c (e_week_view_on_editing_stopped): only delete
+ the event if the summary is empty and the component is not already
+ on the server
+
+ * gui/e-day-view.c (e_day_view_on_editing_stopped): same
+
+ Fixes #14111
+
+2002-09-20 JP Rosevear <jpr@ximian.com>
+
* gui/dialogs/meeting-page.c (meeting_page_fill_widgets): set the
deleted attendees array to size 0 after we clean it up
diff --git a/calendar/gui/comp-util.c b/calendar/gui/comp-util.c
index 6b3c0b0594..46331fa265 100644
--- a/calendar/gui/comp-util.c
+++ b/calendar/gui/comp-util.c
@@ -205,19 +205,17 @@ cal_comp_util_compare_event_timezones (CalComponent *comp,
* was on the server and the user deleted it, or whether the
* user cancelled the deletion.
**/
-ConfirmDeleteEmptyCompResult
-cal_comp_confirm_delete_empty_comp (CalComponent *comp, CalClient *client, GtkWidget *widget)
+gboolean
+cal_comp_is_on_server (CalComponent *comp, CalClient *client)
{
const char *uid;
CalClientGetStatus status;
CalComponent *server_comp;
- g_return_val_if_fail (comp != NULL, EMPTY_COMP_DO_NOT_REMOVE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), EMPTY_COMP_DO_NOT_REMOVE);
- g_return_val_if_fail (client != NULL, EMPTY_COMP_DO_NOT_REMOVE);
- g_return_val_if_fail (IS_CAL_CLIENT (client), EMPTY_COMP_DO_NOT_REMOVE);
- g_return_val_if_fail (widget != NULL, EMPTY_COMP_DO_NOT_REMOVE);
- g_return_val_if_fail (GTK_IS_WIDGET (widget), EMPTY_COMP_DO_NOT_REMOVE);
+ g_return_val_if_fail (comp != NULL, FALSE);
+ g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
+ g_return_val_if_fail (client != NULL, FALSE);
+ g_return_val_if_fail (IS_CAL_CLIENT (client), FALSE);
/* See if the component is on the server. If it is not, then it likely
* means that the appointment is new, only in the day view, and we
@@ -232,30 +230,22 @@ cal_comp_confirm_delete_empty_comp (CalComponent *comp, CalClient *client, GtkWi
switch (status) {
case CAL_CLIENT_GET_SUCCESS:
gtk_object_unref (GTK_OBJECT (server_comp));
- /* Will handle confirmation below */
- break;
+ return TRUE;
case CAL_CLIENT_GET_SYNTAX_ERROR:
g_message ("confirm_delete_empty_appointment(): Syntax error when getting "
"object `%s'",
uid);
- /* However, the object *is* in the server, so confirm */
- break;
+ return TRUE;
case CAL_CLIENT_GET_NOT_FOUND:
- return EMPTY_COMP_REMOVE_LOCALLY;
+ return FALSE;
default:
g_assert_not_reached ();
}
-
- /* The event exists in the server, so confirm whether to delete it */
-
- if (delete_component_dialog (comp, TRUE, 1, CAL_COMPONENT_EVENT, widget)) {
- cal_client_remove_object (client, uid);
- return EMPTY_COMP_REMOVED_FROM_SERVER;
- } else
- return EMPTY_COMP_DO_NOT_REMOVE;
+
+ return FALSE;
}
/**
diff --git a/calendar/gui/comp-util.h b/calendar/gui/comp-util.h
index a4a55c0a2d..de5e9d5336 100644
--- a/calendar/gui/comp-util.h
+++ b/calendar/gui/comp-util.h
@@ -36,15 +36,8 @@ gboolean cal_comp_util_compare_event_timezones (CalComponent *comp,
CalClient *client,
icaltimezone *zone);
-typedef enum {
- EMPTY_COMP_REMOVE_LOCALLY,
- EMPTY_COMP_REMOVED_FROM_SERVER,
- EMPTY_COMP_DO_NOT_REMOVE
-} ConfirmDeleteEmptyCompResult;
-
-ConfirmDeleteEmptyCompResult cal_comp_confirm_delete_empty_comp (CalComponent *comp,
- CalClient *client,
- GtkWidget *widget);
+gboolean cal_comp_is_on_server (CalComponent *comp,
+ CalClient *client);
CalComponent *cal_comp_event_new_with_defaults (void);
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index 7a91699185..5c91e54832 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -6265,46 +6265,17 @@ e_day_view_on_editing_stopped (EDayView *day_view,
NULL);
g_assert (text != NULL);
- if (string_is_empty (text)) {
- ConfirmDeleteEmptyCompResult result;
-
- result = cal_comp_confirm_delete_empty_comp (event->comp, day_view->client,
- GTK_WIDGET (day_view));
-
- switch (result) {
- case EMPTY_COMP_REMOVE_LOCALLY: {
- const char *uid;
-
- cal_component_get_uid (event->comp, &uid);
-
- e_day_view_foreach_event_with_uid (day_view, uid,
- e_day_view_remove_event_cb, NULL);
- e_day_view_check_layout (day_view);
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
- goto out; }
-
- case EMPTY_COMP_REMOVED_FROM_SERVER:
- goto out;
-
- case EMPTY_COMP_DO_NOT_REMOVE:
- /* But we cannot keep an empty summary, so make the
- * canvas item refresh itself from the text that the
- * component already had.
- */
-
- if (day == E_DAY_VIEW_LONG_EVENT)
- e_day_view_reshape_long_event (day_view, event_num);
- else
- e_day_view_update_event_label (day_view, day, event_num);
-
- goto out;
-
- default:
- g_assert_not_reached ();
- }
-
- g_assert_not_reached ();
+ if (string_is_empty (text) && !cal_comp_is_on_server (event->comp, day_view->client)) {
+ const char *uid;
+
+ cal_component_get_uid (event->comp, &uid);
+
+ e_day_view_foreach_event_with_uid (day_view, uid,
+ e_day_view_remove_event_cb, NULL);
+ e_day_view_check_layout (day_view);
+ gtk_widget_queue_draw (day_view->top_canvas);
+ gtk_widget_queue_draw (day_view->main_canvas);
+ goto out;
}
/* Only update the summary if necessary. */
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index 9d7d75d711..a10388bed9 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -3258,43 +3258,16 @@ e_week_view_on_editing_stopped (EWeekView *week_view,
NULL);
g_assert (text != NULL);
- if (string_is_empty (text)) {
- ConfirmDeleteEmptyCompResult result;
-
- result = cal_comp_confirm_delete_empty_comp (event->comp, week_view->client,
- GTK_WIDGET (week_view));
-
- switch (result) {
- case EMPTY_COMP_REMOVE_LOCALLY: {
- const char *uid;
-
- cal_component_get_uid (event->comp, &uid);
-
- e_week_view_foreach_event_with_uid (week_view, uid,
- e_week_view_remove_event_cb, NULL);
- gtk_widget_queue_draw (week_view->main_canvas);
- e_week_view_check_layout (week_view);
- goto out; }
-
- case EMPTY_COMP_REMOVED_FROM_SERVER:
- goto out;
-
- case EMPTY_COMP_DO_NOT_REMOVE:
- /* But we cannot keep an empty summary, so make the
- * canvas item refresh itself from the text that the
- * component already had.
- */
-
- gtk_object_ref (GTK_OBJECT (event->comp));
- e_week_view_update_event_cb (week_view, event_num, event->comp);
- gtk_object_unref (GTK_OBJECT (event->comp));
- goto out;
-
- default:
- g_assert_not_reached ();
- }
-
- g_assert_not_reached ();
+ if (string_is_empty (text) && !cal_comp_is_on_server (event->comp, week_view->client)) {
+ const char *uid;
+
+ cal_component_get_uid (event->comp, &uid);
+
+ e_week_view_foreach_event_with_uid (week_view, uid,
+ e_week_view_remove_event_cb, NULL);
+ gtk_widget_queue_draw (week_view->main_canvas);
+ e_week_view_check_layout (week_view);
+ goto out;
}
/* Only update the summary if necessary. */