From f1f9d839433a46a8f5fa284389bbea41b04511e2 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Mon, 14 Aug 2023 14:57:00 -0300 Subject: [PATCH] views/month: Implement get_children_by_uuid Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1057 --- src/gui/views/gcal-month-view-row.c | 11 +++++++++++ src/gui/views/gcal-month-view-row.h | 4 ++++ src/gui/views/gcal-month-view.c | 20 +++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/gui/views/gcal-month-view-row.c b/src/gui/views/gcal-month-view-row.c index abd427b2..87aea581 100644 --- a/src/gui/views/gcal-month-view-row.c +++ b/src/gui/views/gcal-month-view-row.c @@ -28,6 +28,7 @@ #include "gcal-month-cell.h" #include "gcal-month-view-row.h" #include "gcal-range-tree.h" +#include "gcal-utils.h" typedef struct { @@ -764,3 +765,13 @@ gcal_month_view_row_update_style_for_date (GcalMonthViewRow *self, gcal_month_cell_set_different_month (GCAL_MONTH_CELL (self->day_cells[i]), different_month); } } + +GList* +gcal_month_view_row_get_children_by_uuid (GcalMonthViewRow *self, + GcalRecurrenceModType mod, + const gchar *uuid) +{ + g_assert (GCAL_IS_MONTH_VIEW_ROW (self)); + + return filter_children_by_uid_and_modtype (GTK_WIDGET (self), mod, uuid); +} diff --git a/src/gui/views/gcal-month-view-row.h b/src/gui/views/gcal-month-view-row.h index 8b8ec4df..2d4177ad 100644 --- a/src/gui/views/gcal-month-view-row.h +++ b/src/gui/views/gcal-month-view-row.h @@ -53,4 +53,8 @@ void gcal_month_view_row_remove_event (GcalMonthViewR void gcal_month_view_row_update_style_for_date (GcalMonthViewRow *self, GDateTime *date); +GList* gcal_month_view_row_get_children_by_uuid (GcalMonthViewRow *self, + GcalRecurrenceModType mod, + const gchar *uuid); + G_END_DECLS diff --git a/src/gui/views/gcal-month-view.c b/src/gui/views/gcal-month-view.c index 70472e1f..dcfb0118 100644 --- a/src/gui/views/gcal-month-view.c +++ b/src/gui/views/gcal-month-view.c @@ -1045,7 +1045,25 @@ gcal_month_view_get_children_by_uuid (GcalView *view, GcalRecurrenceModType mod, const gchar *uuid) { - return filter_children_by_uid_and_modtype (GTK_WIDGET (view), mod, uuid); + g_autoptr (GList) children = NULL; + GcalMonthView *self; + + GCAL_ENTRY; + + self = GCAL_MONTH_VIEW (view); + + for (guint i = 0; i < self->week_rows->len; i++) + { + g_autoptr (GList) row_children = NULL; + GcalMonthViewRow *row; + + row = g_ptr_array_index (self->week_rows, i); + row_children = gcal_month_view_row_get_children_by_uuid (row, mod, uuid); + + children = g_list_concat (children, g_steal_pointer (&row_children)); + } + + GCAL_RETURN (g_steal_pointer (&children)); } static GDateTime*