[evolution] Tasks: Ensure ICalTime::zone is set for current time
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Tasks: Ensure ICalTime::zone is set for current time
- Date: Wed, 11 May 2022 12:29:40 +0000 (UTC)
commit df3b39156650eb6bcb1e8537e343c64fee974b01
Author: Milan Crha <mcrha redhat com>
Date: Wed May 11 14:27:17 2022 +0200
Tasks: Ensure ICalTime::zone is set for current time
Without having set correct time zone for the ICalTime the conversion
routines can convert time twice into the destination time zone,
which causes wrong time. It could be seen also when comparing
the current time with the component time.
Related to https://github.com/libical/libical/issues/571
src/calendar/gui/e-cal-model-tasks.c | 1 +
src/calendar/gui/e-to-do-pane.c | 3 +++
2 files changed, 4 insertions(+)
---
diff --git a/src/calendar/gui/e-cal-model-tasks.c b/src/calendar/gui/e-cal-model-tasks.c
index 44134cbebd..897481d806 100644
--- a/src/calendar/gui/e-cal-model-tasks.c
+++ b/src/calendar/gui/e-cal-model-tasks.c
@@ -363,6 +363,7 @@ get_due_status (ECalModelTasks *model,
}
now_tt = i_cal_time_new_current_with_zone (zone);
+ i_cal_time_set_timezone (now_tt, zone);
if (i_cal_time_compare (due_tt, now_tt) <= 0)
res = E_CAL_MODEL_TASKS_DUE_OVERDUE;
diff --git a/src/calendar/gui/e-to-do-pane.c b/src/calendar/gui/e-to-do-pane.c
index 788fdf7e4d..5a71381e2f 100644
--- a/src/calendar/gui/e-to-do-pane.c
+++ b/src/calendar/gui/e-to-do-pane.c
@@ -906,6 +906,7 @@ etdp_get_comp_colors (EToDoPane *to_do_pane,
etdp_itt_to_zone (itt, e_cal_component_datetime_get_tzid (dt), client, default_zone);
now = i_cal_time_new_current_with_zone (default_zone);
+ i_cal_time_set_timezone (now, default_zone);
if ((is_date && i_cal_time_compare_date_only (itt, now) <= 0) ||
(!is_date && i_cal_time_compare (itt, now) <= 0)) {
@@ -1485,6 +1486,7 @@ etdp_check_time_changed (EToDoPane *to_do_pane,
zone = e_cal_data_model_get_timezone (to_do_pane->priv->events_data_model);
itt = i_cal_time_new_current_with_zone (zone);
+ i_cal_time_set_timezone (itt, zone);
new_today = etdp_create_date_mark (itt);
if (force_update || new_today != to_do_pane->priv->last_today) {
@@ -1924,6 +1926,7 @@ etdp_new_common (EToDoPane *to_do_pane,
time_divisions_secs = g_settings_get_int (settings, "time-divisions") * 60;
zone = e_cal_data_model_get_timezone (to_do_pane->priv->events_data_model);
now = i_cal_time_new_current_with_zone (zone);
+ i_cal_time_set_timezone (now, zone);
i_cal_time_set_year (now, date_mark / 10000);
i_cal_time_set_month (now, (date_mark / 100) % 100);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]