diff options
author | Milan Crha <mcrha@redhat.com> | 2008-06-09 18:09:05 +0800 |
---|---|---|
committer | Milan Crha <mcrha@src.gnome.org> | 2008-06-09 18:09:05 +0800 |
commit | 7d4f83689a512f3af1a4002a1567ffbb2762ebb9 (patch) | |
tree | fb560b80ac5a1e7a262c5170a5fd13925aa30531 | |
parent | 5c0a74daec3233ea307f25e23c83ba0db83f1b47 (diff) | |
download | gsoc2013-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
-rw-r--r-- | calendar/ChangeLog | 13 | ||||
-rw-r--r-- | calendar/gui/comp-util.c | 23 | ||||
-rw-r--r-- | calendar/gui/comp-util.h | 1 | ||||
-rw-r--r-- | calendar/gui/e-week-view-event-item.c | 5 | ||||
-rw-r--r-- | calendar/gui/e-week-view.c | 5 |
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); |