[evolution/gnome-43] Calendar: Compare date with correct zone



commit 910186c4c40fcda8c4fce8daa662eb4afcb0056e
Author: Milan Crha <mcrha redhat com>
Date:   Fri Sep 16 09:06:28 2022 +0200

    Calendar: Compare date with correct zone
    
    The i_cal_time_compare_date_only() may use wrong time zone, not the user's,
    thus prefer i_cal_time_compare_date_only_tz() to ensure the user's
    time zone is used in the comparison.

 src/calendar/gui/comp-util.c            |  2 +-
 src/calendar/gui/e-cal-model-tasks.c    |  2 +-
 src/calendar/gui/e-day-view-main-item.c | 14 ++++++--------
 3 files changed, 8 insertions(+), 10 deletions(-)
---
diff --git a/src/calendar/gui/comp-util.c b/src/calendar/gui/comp-util.c
index b6d75ca793..aa1cbc27f7 100644
--- a/src/calendar/gui/comp-util.c
+++ b/src/calendar/gui/comp-util.c
@@ -2079,7 +2079,7 @@ cal_comp_util_describe (ECalComponent *comp,
        itt_end = cal_comp_util_date_time_to_zone (dtend, client, default_zone);
 
        if ((flags & E_CAL_COMP_UTIL_DESCRIBE_FLAG_ONLY_TIME) != 0 &&
-           (itt_start && (!itt_end || i_cal_time_compare_date_only (itt_start, itt_end) == 0))) {
+           (itt_start && (!itt_end || i_cal_time_compare_date_only_tz (itt_start, itt_end, default_zone) == 
0))) {
                if ((flags & E_CAL_COMP_UTIL_DESCRIBE_FLAG_24HOUR_FORMAT) != 0) {
                        g_snprintf (timestr, sizeof (timestr), "%d:%02d", i_cal_time_get_hour (itt_start), 
i_cal_time_get_minute (itt_start));
                } else {
diff --git a/src/calendar/gui/e-cal-model-tasks.c b/src/calendar/gui/e-cal-model-tasks.c
index cef7e4e161..804089f1d9 100644
--- a/src/calendar/gui/e-cal-model-tasks.c
+++ b/src/calendar/gui/e-cal-model-tasks.c
@@ -374,7 +374,7 @@ get_due_status (ECalModelTasks *model,
 
                        if (i_cal_time_compare (due_tt, now_tt) <= 0)
                                res = E_CAL_MODEL_TASKS_DUE_OVERDUE;
-                       else if (i_cal_time_compare_date_only (due_tt, now_tt) == 0)
+                       else if (i_cal_time_compare_date_only_tz (due_tt, now_tt, zone) == 0)
                                res = E_CAL_MODEL_TASKS_DUE_TODAY;
                        else
                                res = E_CAL_MODEL_TASKS_DUE_FUTURE;
diff --git a/src/calendar/gui/e-day-view-main-item.c b/src/calendar/gui/e-day-view-main-item.c
index 15b86d65fd..be33be0593 100644
--- a/src/calendar/gui/e-day-view-main-item.c
+++ b/src/calendar/gui/e-day-view-main-item.c
@@ -1020,6 +1020,7 @@ day_view_main_item_draw (GnomeCanvasItem *canvas_item,
        gint start_row, end_row, rect_x, rect_y, rect_width, rect_height;
        gint days_shown;
        ICalTime *day_start_tt, *today_tt;
+       ICalTimezone *zone;
        gboolean today = FALSE;
        cairo_region_t *draw_region;
        GdkRectangle rect;
@@ -1050,16 +1051,13 @@ day_view_main_item_draw (GnomeCanvasItem *canvas_item,
 
        /* Paint the background colors. */
 
-       today_tt = i_cal_time_new_from_timet_with_zone (
-               time (NULL), FALSE,
-               e_calendar_view_get_timezone (E_CALENDAR_VIEW (day_view)));
+       zone = e_calendar_view_get_timezone (E_CALENDAR_VIEW (day_view));
+       today_tt = i_cal_time_new_current_with_zone (zone);
 
        for (day = 0; day < days_shown; day++) {
                GDateWeekday weekday;
 
-               day_start_tt = i_cal_time_new_from_timet_with_zone (
-                       day_view->day_starts[day], FALSE,
-                       e_calendar_view_get_timezone (E_CALENDAR_VIEW (day_view)));
+               day_start_tt = i_cal_time_new_from_timet_with_zone (day_view->day_starts[day], FALSE, zone);
 
                switch (i_cal_time_day_of_week (day_start_tt)) {
                        case 1:
@@ -1118,7 +1116,7 @@ day_view_main_item_draw (GnomeCanvasItem *canvas_item,
 
                        if (days_shown > 1) {
                                /* Check if we are drawing today */
-                               today = i_cal_time_compare_date_only (day_start_tt, today_tt) == 0;
+                               today = i_cal_time_compare_date_only_tz (day_start_tt, today_tt, zone) == 0;
                        } else {
                                today = FALSE;
                        }
@@ -1284,7 +1282,7 @@ day_view_main_item_draw (GnomeCanvasItem *canvas_item,
                for (day = 0; day < days_shown; day++) {
                        day_start = i_cal_time_new_from_timet_with_zone (day_view->day_starts[day], FALSE, 
zone);
 
-                       if (i_cal_time_compare_date_only (day_start, time_now) == 0) {
+                       if (i_cal_time_compare_date_only_tz (day_start, time_now, zone) == 0) {
                                grid_x1 = day_view->day_offsets[day] - x + E_DAY_VIEW_BAR_WIDTH;
                                grid_x2 = day_view->day_offsets[day + 1] - x - 1;
                                marcus_bains_y = (i_cal_time_get_hour (time_now) * 60 + i_cal_time_get_minute 
(time_now)) * day_view->row_height / time_divisions - y;


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