diff --git a/src/gui/views/gcal-week-header.c b/src/gui/views/gcal-week-header.c index 1e0336a1..1839b478 100644 --- a/src/gui/views/gcal-week-header.c +++ b/src/gui/views/gcal-week-header.c @@ -1849,17 +1849,21 @@ void gcal_week_header_set_date (GcalWeekHeader *self, GDateTime *date) { + g_autoptr (GDateTime) start_of_week_1 = NULL; + g_autoptr (GDateTime) start_of_week_2 = NULL; gboolean had_date; /* * If the active date changed, but we're still in the same week, * there's no need to recalculate visible events. */ - if (self->active_date && date && - g_date_time_get_year (self->active_date) == g_date_time_get_year (date) && - g_date_time_get_week_of_year (self->active_date) == g_date_time_get_week_of_year (date)) + if (self->active_date && date) { - return; + start_of_week_1 = gcal_date_time_get_start_of_week (self->active_date); + start_of_week_2 = gcal_date_time_get_start_of_week (date); + + if (g_date_time_equal (start_of_week_1, start_of_week_2)) + return; } had_date = self->active_date != NULL; diff --git a/src/utils/gcal-date-time-utils.c b/src/utils/gcal-date-time-utils.c index ed1b8455..586656e8 100644 --- a/src/utils/gcal-date-time-utils.c +++ b/src/utils/gcal-date-time-utils.c @@ -89,7 +89,7 @@ gcal_date_time_get_start_of_week (GDateTime *date) g_assert (date != NULL); first_weekday = gcal_context_get_week_start_day (context); - weekday = g_date_time_get_day_of_week (date) % GCAL_N_WEEKDAYS; + weekday = g_date_time_get_day_of_week (date); n_days_after_week_start = GCAL_NTH_WEEKDAY (weekday, first_weekday); start_of_week = g_date_time_add_days (date, -n_days_after_week_start);