From c0365a16815ff2ec208444e05ea2188db0a6c270 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Fri, 14 Jan 2022 11:35:58 -0300 Subject: [PATCH] event-editor/reminders: Port to GTK4 --- src/gui/event-editor/gcal-reminders-section.c | 37 ++++++++---- .../event-editor/gcal-reminders-section.ui | 56 +++++-------------- 2 files changed, 41 insertions(+), 52 deletions(-) diff --git a/src/gui/event-editor/gcal-reminders-section.c b/src/gui/event-editor/gcal-reminders-section.c index e53df842..7929ec9b 100644 --- a/src/gui/event-editor/gcal-reminders-section.c +++ b/src/gui/event-editor/gcal-reminders-section.c @@ -33,7 +33,7 @@ struct _GcalRemindersSection GtkBox parent; GtkListBox *alarms_listbox; - GtkPopover *alarms_popover; + GtkWidget *alarms_popover; GtkListBoxRow *new_alarm_row; GtkWidget *five_minutes_button; @@ -132,16 +132,19 @@ create_alarm (guint minutes) static void clear_alarms (GcalRemindersSection *self) { - g_autoptr (GList) children = NULL; - GList *l; + GtkWidget *child; g_ptr_array_set_size (self->alarms, 0); - children = gtk_container_get_children (GTK_CONTAINER (self->alarms_listbox)); - for (l = children; l != NULL; l = l->next) + child = gtk_widget_get_first_child (GTK_WIDGET (self->alarms_listbox)); + while (child) { - if (l->data != self->new_alarm_row) - gtk_widget_destroy (l->data); + GtkWidget *next = gtk_widget_get_next_sibling (child); + + if (child != GTK_WIDGET (self->new_alarm_row)) + gtk_list_box_remove (self->alarms_listbox, child); + + child = next; } } @@ -201,7 +204,7 @@ setup_alarms (GcalRemindersSection *self) /* Add the row */ row = create_alarm_row (self, alarm); - gtk_container_add (GTK_CONTAINER (self->alarms_listbox), row); + gtk_list_box_append (self->alarms_listbox, row); } GCAL_EXIT; @@ -273,7 +276,7 @@ on_remove_alarm_cb (GcalAlarmRow *alarm_row, } } - gtk_container_remove (GTK_CONTAINER (self->alarms_listbox), GTK_WIDGET (alarm_row)); + gtk_list_box_remove (self->alarms_listbox, GTK_WIDGET (alarm_row)); GCAL_EXIT; } @@ -304,7 +307,7 @@ on_add_alarm_button_clicked_cb (GtkWidget *button, alarm = create_alarm (minutes); row = create_alarm_row (self, alarm); - gtk_container_add (GTK_CONTAINER (self->alarms_listbox), row); + gtk_list_box_append (self->alarms_listbox, row); g_ptr_array_add (self->alarms, alarm); @@ -317,7 +320,7 @@ on_alarms_listbox_row_activated_cb (GtkListBox *alarms_listbox, GcalRemindersSection *self) { if (row == self->new_alarm_row) - gtk_popover_popup (self->alarms_popover); + gtk_popover_popup (GTK_POPOVER (self->alarms_popover)); } @@ -370,6 +373,16 @@ gcal_event_editor_section_iface_init (GcalEventEditorSectionInterface *iface) * GObject overrides */ +static void +gcal_reminders_section_dispose (GObject *object) +{ + GcalRemindersSection *self = (GcalRemindersSection *)object; + + g_clear_pointer (&self->alarms_popover, gtk_widget_unparent); + + G_OBJECT_CLASS (gcal_reminders_section_parent_class)->dispose (object); +} + static void gcal_reminders_section_finalize (GObject *object) { @@ -427,6 +440,7 @@ gcal_reminders_section_class_init (GcalRemindersSectionClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + object_class->dispose = gcal_reminders_section_dispose; object_class->finalize = gcal_reminders_section_finalize; object_class->get_property = gcal_reminders_section_get_property; object_class->set_property = gcal_reminders_section_set_property; @@ -460,4 +474,5 @@ gcal_reminders_section_init (GcalRemindersSection *self) gtk_widget_init_template (GTK_WIDGET (self)); gtk_list_box_set_sort_func (self->alarms_listbox, sort_alarms_func, self, NULL); + gtk_widget_set_parent (GTK_WIDGET (self->alarms_popover), GTK_WIDGET (self->new_alarm_row)); } diff --git a/src/gui/event-editor/gcal-reminders-section.ui b/src/gui/event-editor/gcal-reminders-section.ui index 6286e25c..614d5b38 100644 --- a/src/gui/event-editor/gcal-reminders-section.ui +++ b/src/gui/event-editor/gcal-reminders-section.ui @@ -1,30 +1,28 @@ - - False + 175 - new_alarm_row + - True - False - 12 + 12 + 12 + 12 + 12 vertical - True - True - True 5 minutes - True - True - True 10 minutes - True - True - True 15 minutes - True - True - True 30 minutes - True - True - True 1 hour - True - True 1 day - True - True - True 2 days - True - True - True 3 days - True - True - True 1 week