[evolution-patches] [calendar] 313657: IOP: Implement Outlook-like handling of recurrence corner-cases



Attached patch fixes

http://bugzilla.gnome.org/show_bug.cgi?id=313657

Occurrences on non-existing days are now shown on the last day of the month. This makes Evolution more compatible with Outlook/Exchange.

OK to commit?

Carsten

Index: e-cal-recur.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/libecal/e-cal- recur.c,v
retrieving revision 1.6
diff -u -p -r1.6 e-cal-recur.c
--- e-cal-recur.c    4 May 2005 06:43:46 -0000    1.6
+++ e-cal-recur.c    16 Aug 2005 21:47:16 -0000
@@ -1958,8 +1958,11 @@ cal_obj_remove_duplicates_and_invalid_da
                    && (year % 100 != 0
                        || year % 400 == 0)))
             days++;
-        if (occ->day > days)
-            keep_occ = FALSE;
+
+        if (occ->day > days) {
+            /* move occurrence to the last day of the month */
+            occ->day = days;
+        }

         if (keep_occ) {
             if (i != j)
@@ -2898,10 +2901,15 @@ cal_obj_bymonthday_expand    (RecurData  *r
                 cotime = month_end_cotime;
                 cal_obj_time_add_days (&cotime, dayno);
             }
-
-            /* Skip occurrences if they fall outside the month. */
-            if (cotime.month == occ->month)
+            if (cotime.month == occ->month) {
                 g_array_append_val (new_occs, cotime);
+            } else {
+                /* set to last day in month */
+                cotime.month = occ->month;
+ cotime.day = time_days_in_month (occ->year, occ- >month);
+                g_array_append_val (new_occs, cotime);
+            }
+
             elem = elem->next;
         }
     }




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]