views/month: Simplify layout blocks recalculation

We can merge two of the three branches, and thus cleanup a function
that is only used there.

Suggested by Hari.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/758>
This commit is contained in:
Georges Basile Stavracas Neto
2026-05-19 22:20:10 +00:00
committed by Marge Bot
parent c609f281dc
commit 573e1dc042
+10 -39
View File
@@ -733,26 +733,6 @@ pick_existing_event_widget (GHashTable *event_widgets,
return g_ptr_array_steal_index_fast (widgets, 0);
}
static GtkWidget *
pick_or_create_event_widget_for_event (GcalMonthViewRow *self,
GHashTable *event_widgets,
GcalEvent *event)
{
GtkWidget *event_widget;
event_widget = pick_existing_event_widget (event_widgets, event);
if (!event_widget)
{
event_widget = gcal_event_widget_pool_take_or_create (self->event_widget_pool, event);
g_assert (GCAL_IS_EVENT_WIDGET (event_widget));
setup_child_widget (self, event_widget);
}
return g_steal_pointer (&event_widget);
}
static void
recalculate_layout_blocks (GcalMonthViewRow *self)
{
@@ -794,11 +774,18 @@ recalculate_layout_blocks (GcalMonthViewRow *self)
{
events_at_weekday[cell]++;
if (!block)
if (!block || (cell > first_cell && events_at_weekday[cell] != events_at_weekday[cell - 1]))
{
GtkWidget *event_widget;
GtkWidget *event_widget = pick_existing_event_widget (event_widgets, event);
event_widget = pick_or_create_event_widget_for_event (self, event_widgets, event);
if (!event_widget)
{
event_widget = gcal_event_widget_pool_take_or_create (self->event_widget_pool, event);
g_assert (GCAL_IS_EVENT_WIDGET (event_widget));
setup_child_widget (self, event_widget);
}
if (!gcal_event_get_all_day (event) && !gcal_event_is_multiday (event))
gcal_event_widget_set_timestamp_policy (GCAL_EVENT_WIDGET (event_widget), GCAL_TIMESTAMP_POLICY_START);
@@ -808,22 +795,6 @@ recalculate_layout_blocks (GcalMonthViewRow *self)
block->length = 1;
block->cell = cell;
g_ptr_array_add (blocks, block);
}
else if (cell > first_cell && events_at_weekday[cell] != events_at_weekday[cell - 1])
{
GtkWidget *new_event_widget;
new_event_widget = pick_or_create_event_widget_for_event (self, event_widgets, event);
if (!gcal_event_get_all_day (event) && !gcal_event_is_multiday (event))
gcal_event_widget_set_timestamp_policy (GCAL_EVENT_WIDGET (new_event_widget), GCAL_TIMESTAMP_POLICY_START);
block = g_new (GcalEventBlock, 1);
block->event_widget = g_steal_pointer (&new_event_widget);
block->length = 1;
block->cell = cell;
g_ptr_array_add (blocks, block);
}
else