aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util/cal-recur.c
diff options
context:
space:
mode:
authorDamon Chaplin <damon@ximian.com>2001-10-26 07:28:15 +0800
committerDamon Chaplin <damon@src.gnome.org>2001-10-26 07:28:15 +0800
commite4e894969ece81b2ed434c7d66e4b2d1b42244d3 (patch)
tree2e496669781f0de409b5c18b711ffecc26f1a66d /calendar/cal-util/cal-recur.c
parent750c920dcdce2d34d7f9bce228ff897024808f26 (diff)
downloadgsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar.gz
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.tar.zst
gsoc2013-evolution-e4e894969ece81b2ed434c7d66e4b2d1b42244d3.zip
subtract 1 from any positive BYSETPOS value, since our array is 0-based.
2001-10-25 Damon Chaplin <damon@ximian.com> * 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
Diffstat (limited to 'calendar/cal-util/cal-recur.c')
-rw-r--r--calendar/cal-util/cal-recur.c10
1 files changed, 7 insertions, 3 deletions
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);