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:
committed by
Marge Bot
parent
c609f281dc
commit
573e1dc042
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user