diff options
-rw-r--r-- | calendar/ChangeLog | 7 | ||||
-rw-r--r-- | calendar/gui/e-day-view.c | 14 | ||||
-rw-r--r-- | calendar/gui/e-week-view.c | 12 |
3 files changed, 32 insertions, 1 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 42e22fc813..313b4a6b62 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,5 +1,12 @@ 2001-07-31 Rodrigo Moya <rodrigo@ximian.com> + * gui/e-day-view.c (selection_received): + * gui/e-week-view.c (selection_received): yes, set the end date, but + correctly calculated, not by using the component's duration, which + may not exist. Now really fixes #5836 + +2001-07-31 Rodrigo Moya <rodrigo@ximian.com> + * gui/e-day-view.c (selection_received): * gui/e-week-view.c (selection_received): don't set the end date for the pasted components, since it will be recalculated when the start diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 4da82c61a5..daff360ab6 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -6680,6 +6680,8 @@ selection_received (GtkWidget *invisible, icalcomponent_kind kind; CalComponent *comp; char *uid; + time_t tt_start, tt_end; + struct icaldurationtype ic_dur; g_return_if_fail (E_IS_DAY_VIEW (day_view)); @@ -6718,9 +6720,14 @@ selection_received (GtkWidget *invisible, child_kind == ICAL_VJOURNAL_COMPONENT) { CalComponent *tmp_comp; + tt_start = icaltime_as_timet (icalcomponent_get_dtstart (subcomp)); + tt_end = icaltime_as_timet (icalcomponent_get_dtend (subcomp)); + ic_dur = icaldurationtype_from_int (tt_end - tt_start); itime = icaltime_from_timet_with_zone (dtstart, FALSE, day_view->zone); /* FIXME: Need to set TZID. */ - icalcomponent_set_dtstart (icalcomp, itime); + icalcomponent_set_dtstart (subcomp, itime); + itime = icaltime_add (itime, ic_dur); + icalcomponent_set_dtend (subcomp, itime); uid = cal_component_gen_uid (); tmp_comp = cal_component_new (); @@ -6747,9 +6754,14 @@ selection_received (GtkWidget *invisible, } } else { + tt_start = icaltime_as_timet (icalcomponent_get_dtstart (icalcomp)); + tt_end = icaltime_as_timet (icalcomponent_get_dtend (icalcomp)); + ic_dur = icaldurationtype_from_int (tt_end - tt_start); itime = icaltime_from_timet_with_zone (dtstart, FALSE, day_view->zone); /* FIXME: Need to set TZID. */ icalcomponent_set_dtstart (icalcomp, itime); + itime = icaltime_add (itime, ic_dur); + icalcomponent_set_dtend (icalcomp, itime); comp = cal_component_new (); cal_component_set_icalcomponent (comp, icalcomp); diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index 2e5d2d72e6..c0b9d82a10 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -3591,6 +3591,8 @@ selection_received (GtkWidget *invisible, icalcomponent_kind kind; CalComponent *comp; char *uid; + time_t tt_start, tt_end; + struct icaldurationtype ic_dur; g_return_if_fail (E_IS_WEEK_VIEW (week_view)); @@ -3629,9 +3631,14 @@ selection_received (GtkWidget *invisible, child_kind == ICAL_VJOURNAL_COMPONENT) { CalComponent *tmp_comp; + tt_start = icaltime_as_timet (icalcomponent_get_dtstart (subcomp)); + tt_end = icaltime_as_timet (icalcomponent_get_dtend (subcomp)); + ic_dur = icaldurationtype_from_int (tt_end - tt_start); itime = icaltime_from_timet_with_zone (dtstart, FALSE, week_view->zone); /* FIXME: Need to set TZID. */ icalcomponent_set_dtstart (icalcomp, itime); + itime = icaltime_add (itime, ic_dur); + icalcomponent_set_dtend (icalcomp, itime); uid = cal_component_gen_uid (); tmp_comp = cal_component_new (); @@ -3658,9 +3665,14 @@ selection_received (GtkWidget *invisible, } } else { + tt_start = icaltime_as_timet (icalcomponent_get_dtstart (icalcomp)); + tt_end = icaltime_as_timet (icalcomponent_get_dtend (icalcomp)); + ic_dur = icaldurationtype_from_int (tt_end - tt_start); itime = icaltime_from_timet_with_zone (dtstart, FALSE, week_view->zone); /* FIXME: need to set TZID */ icalcomponent_set_dtstart (icalcomp, itime); + itime = icaltime_add (itime, ic_dur); + icalcomponent_set_dtend (icalcomp, itime); comp = cal_component_new (); cal_component_set_icalcomponent (comp, icalcomp); |