aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2008-06-09 18:09:05 +0800
committerMilan Crha <mcrha@src.gnome.org>2008-06-09 18:09:05 +0800
commit7d4f83689a512f3af1a4002a1567ffbb2762ebb9 (patch)
treefb560b80ac5a1e7a262c5170a5fd13925aa30531 /calendar
parent5c0a74daec3233ea307f25e23c83ba0db83f1b47 (diff)
downloadgsoc2013-evolution-7d4f83689a512f3af1a4002a1567ffbb2762ebb9.tar
gsoc2013-evolution-7d4f83689a512f3af1a4002a1567ffbb2762ebb9.tar.gz
gsoc2013-evolution-7d4f83689a512f3af1a4002a1567ffbb2762ebb9.tar.bz2
gsoc2013-evolution-7d4f83689a512f3af1a4002a1567ffbb2762ebb9.tar.lz
gsoc2013-evolution-7d4f83689a512f3af1a4002a1567ffbb2762ebb9.tar.xz
gsoc2013-evolution-7d4f83689a512f3af1a4002a1567ffbb2762ebb9.tar.zst
gsoc2013-evolution-7d4f83689a512f3af1a4002a1567ffbb2762ebb9.zip
** Fix for bug #536813
2008-06-09 Milan Crha <mcrha@redhat.com> ** Fix for bug #536813 * gui/comp-util.h: (is_icalcomp_on_the_server): * gui/comp-util.c: (is_icalcomp_on_the_server): Similar helper function as cal_comp_is_on_server only the parameter is icalcomponent. * gui/e-week-view-event-item.c: (e_week_view_event_item_double_click): * gui/e-week-view.c: (e_week_view_on_text_item_event): Do not start to edit the event on the double click if the event is not on the server yet. Storing the event can cause the renumbering events so the result can be that the edited event would be different. svn path=/trunk/; revision=35618
Diffstat (limited to 'calendar')
-rw-r--r--calendar/ChangeLog13
-rw-r--r--calendar/gui/comp-util.c23
-rw-r--r--calendar/gui/comp-util.h1
-rw-r--r--calendar/gui/e-week-view-event-item.c5
-rw-r--r--calendar/gui/e-week-view.c5
5 files changed, 44 insertions, 3 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 6fd1593859..f4e2ded865 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,16 @@
+2008-06-09 Milan Crha <mcrha@redhat.com>
+
+ ** Fix for bug #536813
+
+ * gui/comp-util.h: (is_icalcomp_on_the_server):
+ * gui/comp-util.c: (is_icalcomp_on_the_server): Similar helper function
+ as cal_comp_is_on_server only the parameter is icalcomponent.
+ * gui/e-week-view-event-item.c: (e_week_view_event_item_double_click):
+ * gui/e-week-view.c: (e_week_view_on_text_item_event):
+ Do not start to edit the event on the double click if the event is not
+ on the server yet. Storing the event can cause the renumbering events
+ so the result can be that the edited event would be different.
+
2008-06-04 Matthew Barnes <mbarnes@redhat.com>
** Fixes security vulnerabilities
diff --git a/calendar/gui/comp-util.c b/calendar/gui/comp-util.c
index e1aacc7c9e..392f991a84 100644
--- a/calendar/gui/comp-util.c
+++ b/calendar/gui/comp-util.c
@@ -248,6 +248,29 @@ cal_comp_is_on_server (ECalComponent *comp, ECal *client)
}
/**
+ * is_icalcomp_on_the_server:
+ * same as @cal_comp_is_on_server, only the component parameter is icalcomponent, not the ECalComponent.
+ **/
+gboolean
+is_icalcomp_on_the_server (icalcomponent *icalcomp, ECal *client)
+{
+ gboolean on_server;
+ ECalComponent *comp;
+
+ if (!icalcomp || !client || !icalcomponent_get_uid (icalcomp))
+ return FALSE;
+
+ comp = e_cal_component_new ();
+ e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (icalcomp));
+
+ on_server = cal_comp_is_on_server (comp, client);
+
+ g_object_unref (comp);
+
+ return on_server;
+}
+
+/**
* cal_comp_event_new_with_defaults:
*
* Creates a new VEVENT component and adds any default alarms to it as set in
diff --git a/calendar/gui/comp-util.h b/calendar/gui/comp-util.h
index 5949b2d318..fe89ee11c4 100644
--- a/calendar/gui/comp-util.h
+++ b/calendar/gui/comp-util.h
@@ -41,6 +41,7 @@ gint cal_comp_util_get_n_icons (ECalComponent *comp);
gboolean cal_comp_is_on_server (ECalComponent *comp,
ECal *client);
+gboolean is_icalcomp_on_the_server (icalcomponent *icalcomp, ECal *client);
ECalComponent *cal_comp_event_new_with_defaults (ECal *client);
ECalComponent *cal_comp_event_new_with_current_time (ECal *client, gboolean all_day);
diff --git a/calendar/gui/e-week-view-event-item.c b/calendar/gui/e-week-view-event-item.c
index 0efeef27ee..e5e079c04d 100644
--- a/calendar/gui/e-week-view-event-item.c
+++ b/calendar/gui/e-week-view-event-item.c
@@ -1079,7 +1079,6 @@ e_week_view_event_item_button_release (EWeekViewEventItem *wveitem,
return FALSE;
}
-
static gboolean
e_week_view_event_item_double_click (EWeekViewEventItem *wveitem,
GdkEvent *bevent)
@@ -1099,8 +1098,8 @@ e_week_view_event_item_double_click (EWeekViewEventItem *wveitem,
if (week_view->editing_event_num >= 0) {
EWeekViewEvent *editing = &g_array_index (week_view->events, EWeekViewEvent, week_view->editing_event_num);
- /* do not call edit of the component, if double clicked on the same component - the event is spread into more days */
- if (editing && event && editing->comp_data == event->comp_data)
+ /* do not call edit of the component, if double clicked on the component, which is not on the server */
+ if (editing && event && editing->comp_data == event->comp_data && (!event->comp_data || !is_icalcomp_on_the_server (event->comp_data->icalcomp, event->comp_data->client)))
return TRUE;
}
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index b1290069f7..442003320d 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -3100,6 +3100,11 @@ e_week_view_on_text_item_event (GnomeCanvasItem *item,
event = &g_array_index (week_view->events, EWeekViewEvent,
event_num);
+ /* if we started to editing new item on the canvas, then do not open editing dialog until it's saved,
+ because the save of the event recalculates event numbers and you can edit different one */
+ if (!is_icalcomp_on_the_server (event->comp_data->icalcomp, event->comp_data->client))
+ return TRUE;
+
e_calendar_view_edit_appointment (E_CALENDAR_VIEW (week_view),
event->comp_data->client,
event->comp_data->icalcomp, FALSE);