From e4e894969ece81b2ed434c7d66e4b2d1b42244d3 Mon Sep 17 00:00:00 2001 From: Damon Chaplin Date: Thu, 25 Oct 2001 23:28:15 +0000 Subject: subtract 1 from any positive BYSETPOS value, since our array is 0-based. 2001-10-25 Damon Chaplin * cal-util/cal-recur.c (cal_obj_bysetpos_filter): subtract 1 from any positive BYSETPOS value, since our array is 0-based. * gui/dialogs/recurrence-page.c (simple_recur_to_comp): (recurrence_page_fill_widgets): Outlook (2000) will not accept monthly recurrences like BYDAY=2TU. Instead it uses BYDAY=TU;BYSETPOS=2. So to be compatable with it we now do the same, although we still accept and convert the old format. * cal-client/cal-client.c (cal_client_get_component_as_string): new function to return a complete VCALENDAR string containing a VEVENT or VTODO with all the VTIMEZONEs it uses. * gui/dialogs/comp-editor.c (save_as_ok): use above function so we save the VTIMEZONE data with the VEVENT/VTODO. Fixes bug #????. Also made sure we output "METHOD:PUBLISH" since Outlook (2000) will not import it otherwise. * gui/dialogs/comp-editor.c (page_mapped_cb): (page_unmapped_cb): install/uninstall the GtkAccelGroup for the page. (comp_editor_append_page): connect to the map/unmap signals to install/uninstall the accelerators. (This is all for bug #11609, though of course it doesn't work too well in GTK+ 1.2 anyway.) * gui/dialogs/task-page.c (get_widgets): * gui/dialogs/task-details-page.c (get_widgets): * gui/dialogs/schedule-page.c (get_widgets): * gui/dialogs/recurrence-page.c (get_widgets): * gui/dialogs/meeting-page.c (get_widgets): * gui/dialogs/event-page.c (get_widgets): * gui/dialogs/alarm-page.c (get_widgets): got the GtkAccelGroup from the original window, ref'ed it and placed it in the CompEditorPage struct. * gui/dialogs/comp-editor-page.c (comp_editor_page_destroy): unref any GtkAccelGroup for the page. * gui/dialogs/task-page.glade: changed '_Confidential' to 'Con_fidential' as it clashed with '_Contacts'. It now matches the event editor as well. * gui/dialogs/event-page.glade: * gui/dialogs/task-page.glade: Set CAN_FOCUS to TRUE for the custom EDateEdit widgets, and set them as the accel targets of the labels. svn path=/trunk/; revision=14108 --- calendar/cal-util/cal-recur.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'calendar/cal-util') diff --git a/calendar/cal-util/cal-recur.c b/calendar/cal-util/cal-recur.c index 28b1be9aec..1f11e89c0f 100644 --- a/calendar/cal-util/cal-recur.c +++ b/calendar/cal-util/cal-recur.c @@ -677,7 +677,9 @@ cal_recur_generate_instances_of_rule (CalComponent *comp, g_return_if_fail (start >= -1); g_return_if_fail (end >= -1); - /* Get dtstart, dtend, recurrences, and exceptions */ + /* Get dtstart, dtend, recurrences, and exceptions. Note that + cal_component_get_dtend() will convert a DURATION property to a + DTEND so we don't need to worry about that. */ cal_component_get_dtstart (comp, &dtstart); cal_component_get_dtend (comp, &dtend); @@ -706,8 +708,6 @@ cal_recur_generate_instances_of_rule (CalComponent *comp, if (start == -1) start = dtstart_time; - /* FIXME: DURATION could be used instead, couldn't it? - Damon */ - /* If there is no DTEND, then use the same as the DTSTART. For DATE-TIME values that means we will just have a single point in time. For DATE values it means we end up with the entire day. */ @@ -2049,6 +2049,10 @@ cal_obj_bysetpos_filter (CalRecurrence *recur, /* Negative values count back from the end of the array. */ if (pos < 0) pos += len; + /* Positive values need to be decremented since the array is + 0-based. */ + else + pos--; if (pos >= 0 && pos < len) { occ = &g_array_index (occs, CalObjTime, pos); -- cgit v1.2.3