From 1fd99f71b2a385c12cecebd918a1b25324fc9fb3 Mon Sep 17 00:00:00 2001 From: mindonwarp Date: Sat, 19 Sep 2026 09:17:19 +0200 Subject: [PATCH] views: Redraw week view after changing week-start-day Part-of: --- src/gui/views/gcal-week-grid.c | 14 ++++++++++++++ src/gui/views/gcal-week-grid.h | 2 ++ src/gui/views/gcal-week-header.c | 19 +++++++++++++++++++ src/gui/views/gcal-week-header.h | 2 ++ src/gui/views/gcal-week-view.c | 10 ++++++++++ 5 files changed, 47 insertions(+) diff --git a/src/gui/views/gcal-week-grid.c b/src/gui/views/gcal-week-grid.c index 2a639547..eca21724 100644 --- a/src/gui/views/gcal-week-grid.c +++ b/src/gui/views/gcal-week-grid.c @@ -1302,3 +1302,17 @@ gcal_week_grid_set_date (GcalWeekGrid *self, invalidate_layout_blocks (self); } +/** + * gcal_week_grid_redraw: + * @self: a #GcalWeekGrid + * + * Triggers a redraw of the grid after e.g. + * changing the start day of week. + */ +void +gcal_week_grid_redraw (GcalWeekGrid *self) +{ + g_assert (GCAL_IS_WEEK_GRID (self)); + + invalidate_layout_blocks (self); +} diff --git a/src/gui/views/gcal-week-grid.h b/src/gui/views/gcal-week-grid.h index 7a9b642f..d5c2dbb4 100644 --- a/src/gui/views/gcal-week-grid.h +++ b/src/gui/views/gcal-week-grid.h @@ -45,6 +45,8 @@ void gcal_week_grid_clear_marks (GcalWeekGrid void gcal_week_grid_set_date (GcalWeekGrid *self, GDateTime *date); +void gcal_week_grid_redraw (GcalWeekGrid *self); + G_END_DECLS #endif /* GCAL_WEEK_GRID_H */ diff --git a/src/gui/views/gcal-week-header.c b/src/gui/views/gcal-week-header.c index 133a84e5..1e0336a1 100644 --- a/src/gui/views/gcal-week-header.c +++ b/src/gui/views/gcal-week-header.c @@ -1907,3 +1907,22 @@ gcal_week_header_set_expanded (GcalWeekHeader *self, g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_EXPANDED]); } + +/** + * gcal_week_header_redraw: + * @self: a #GcalWeekHeader + * + * Triggers a redraw of the week header + * after changing the start day of week. + */ +void +gcal_week_header_redraw (GcalWeekHeader *self) +{ + g_assert (GCAL_IS_WEEK_HEADER (self)); + + update_title (self); + gtk_widget_queue_draw (GTK_WIDGET (self)); + + update_unchanged_events (self, self->active_date); + update_weather_infos (self); +} diff --git a/src/gui/views/gcal-week-header.h b/src/gui/views/gcal-week-header.h index 6c48afc0..9d7e6155 100644 --- a/src/gui/views/gcal-week-header.h +++ b/src/gui/views/gcal-week-header.h @@ -50,6 +50,8 @@ gboolean gcal_week_header_get_expanded (GcalWeekHeader void gcal_week_header_set_expanded (GcalWeekHeader *self, gboolean expanded); +void gcal_week_header_redraw (GcalWeekHeader *self); + G_END_DECLS #endif /* GCAL_WEEK_HEADER_H */ diff --git a/src/gui/views/gcal-week-view.c b/src/gui/views/gcal-week-view.c index 5fe5f5a3..d9ac663c 100644 --- a/src/gui/views/gcal-week-view.c +++ b/src/gui/views/gcal-week-view.c @@ -464,6 +464,15 @@ gcal_week_view_get_previous_date (GcalView *view) return g_date_time_add_weeks (self->date, -1); } +static void +gcal_week_view_first_weekday_changed (GcalView *view) +{ + GcalWeekView *self = GCAL_WEEK_VIEW (view); + + gcal_week_header_redraw (GCAL_WEEK_HEADER (self->header)); + gcal_week_grid_redraw (GCAL_WEEK_GRID (self->week_grid)); +} + static void gcal_view_interface_init (GcalViewInterface *iface) { @@ -473,6 +482,7 @@ gcal_view_interface_init (GcalViewInterface *iface) iface->clear_marks = gcal_week_view_clear_marks; iface->get_next_date = gcal_week_view_get_next_date; iface->get_previous_date = gcal_week_view_get_previous_date; + iface->first_weekday_changed = gcal_week_view_first_weekday_changed; }