From 0e73034ffe82e281b4cacc2ad327a8115efd581c Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Sun, 22 Feb 2026 12:48:56 -0500 Subject: [PATCH] gui/quick-add-popover: Replace "context" property with context getter method Part-of: --- src/gui/gcal-quick-add-popover.c | 100 +++++++++---------------------- src/gui/gcal-window.c | 1 - 2 files changed, 29 insertions(+), 72 deletions(-) diff --git a/src/gui/gcal-quick-add-popover.c b/src/gui/gcal-quick-add-popover.c index a514c36e..470618f6 100644 --- a/src/gui/gcal-quick-add-popover.c +++ b/src/gui/gcal-quick-add-popover.c @@ -39,8 +39,6 @@ struct _GcalQuickAddPopover GcalRange *range; GListModel *read_write_calendars_model; - - GcalContext *context; }; G_DEFINE_TYPE (GcalQuickAddPopover, gcal_quick_add_popover, GTK_TYPE_POPOVER) @@ -48,7 +46,6 @@ G_DEFINE_TYPE (GcalQuickAddPopover, gcal_quick_add_popover, GTK_TYPE_POPOVER) enum { PROP_0, PROP_RANGE, - PROP_CONTEXT, N_PROPS }; @@ -95,13 +92,15 @@ create_row_func (gpointer data, GcalCalendar *default_calendar; GcalCalendar *calendar = data; GcalQuickAddPopover *self = user_data; + GcalContext *context; GcalManager *manager; g_autoptr (GdkPaintable) paintable = NULL; g_autofree gchar *parent_name = NULL; g_autofree gchar *tooltip = NULL; GtkWidget *first_row, *row, *check_button; - manager = gcal_context_get_manager (self->context); + context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + manager = gcal_context_get_manager (context); default_calendar = gcal_manager_get_default_calendar (manager); @@ -142,17 +141,6 @@ bind_model (GcalQuickAddPopover *self) create_row_func, self, NULL); } -static void -set_up_context (GcalQuickAddPopover *self) -{ - GcalManager *manager; - - manager = gcal_context_get_manager (self->context); - self->read_write_calendars_model = gcal_create_writable_calendars_model (manager); - - bind_model (self); -} - static gint get_number_of_days_from_today (GDateTime *day) { @@ -372,7 +360,7 @@ update_header (GcalQuickAddPopover *self) g_autoptr (GDateTime) range_end = NULL; g_autofree gchar *title_date = NULL; gboolean multiday_or_timed; - + GcalContext *context; if (!self->range) return; @@ -403,7 +391,8 @@ update_header (GcalQuickAddPopover *self) GcalTimeFormat time_format; const gchar *hour_format; - time_format = gcal_context_get_time_format (self->context); + context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + time_format = gcal_context_get_time_format (context); if (time_format == GCAL_TIME_FORMAT_24H) hour_format = "%R"; @@ -455,6 +444,7 @@ edit_or_create_event (GcalQuickAddPopover *self, ECalComponent *component; GcalCalendar *calendar; GtkListBoxRow *selected_row; + GcalContext *context; GcalManager *manager; GDateTime *date_start, *date_end; GTimeZone *tz; @@ -465,7 +455,8 @@ edit_or_create_event (GcalQuickAddPopover *self, range_start = gcal_range_get_start (self->range); range_end = gcal_range_get_end (self->range); - manager = gcal_context_get_manager (self->context); + context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + manager = gcal_context_get_manager (context); selected_row = gtk_list_box_get_selected_row (GTK_LIST_BOX (self->calendars_list_box)); calendar = gcal_calendar_row_get_calendar (GCAL_CALENDAR_ROW (selected_row)); @@ -554,16 +545,6 @@ summary_entry_activated (AdwEntryRow *entry, * Overrides */ -static void -gcal_quick_add_popover_finalize (GObject *object) -{ - GcalQuickAddPopover *self = (GcalQuickAddPopover *)object; - - g_clear_object (&self->context); - - G_OBJECT_CLASS (gcal_quick_add_popover_parent_class)->finalize (object); -} - static void gcal_quick_add_popover_get_property (GObject *object, guint prop_id, @@ -578,10 +559,6 @@ gcal_quick_add_popover_get_property (GObject *object, g_value_set_object (value, self->range); break; - case PROP_CONTEXT: - g_value_set_object (value, self->context); - break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -601,31 +578,6 @@ gcal_quick_add_popover_set_property (GObject *object, gcal_quick_add_popover_set_range (self, g_value_get_boxed (value)); break; - case PROP_CONTEXT: - { - GcalManager *manager; - - g_assert (self->context == NULL); - self->context = g_value_dup_object (value); - - manager = gcal_context_get_manager (self->context); - set_up_context (self); - - /* Connect to the manager signals and keep the list updates */ - g_signal_connect_object (manager, - "notify::default-calendar", - G_CALLBACK (bind_model), - self, - G_CONNECT_SWAPPED); - - g_signal_connect_object (self->context, - "notify::time-format", - G_CALLBACK (update_header), - self, - G_CONNECT_SWAPPED); - } - break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -658,7 +610,6 @@ gcal_quick_add_popover_class_init (GcalQuickAddPopoverClass *klass) popover_class->closed = gcal_quick_add_popover_closed; - object_class->finalize = gcal_quick_add_popover_finalize; object_class->get_property = gcal_quick_add_popover_get_property; object_class->set_property = gcal_quick_add_popover_set_property; @@ -690,19 +641,6 @@ gcal_quick_add_popover_class_init (GcalQuickAddPopoverClass *klass) G_TYPE_DATE_TIME, G_PARAM_READWRITE)); - /** - * GcalQuickAddPopover::context: - * - * The context of the application. - */ - g_object_class_install_property (object_class, - PROP_CONTEXT, - g_param_spec_object ("context", - "Context of the application", - "The singleton context of the application", - GCAL_TYPE_CONTEXT, - G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS)); - gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/gcal-quick-add-popover.ui"); gtk_widget_class_bind_template_child (widget_class, GcalQuickAddPopover, add_button); @@ -720,7 +658,27 @@ gcal_quick_add_popover_class_init (GcalQuickAddPopoverClass *klass) static void gcal_quick_add_popover_init (GcalQuickAddPopover *self) { + GcalContext *context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + GcalManager *manager = gcal_context_get_manager (context); + gtk_widget_init_template (GTK_WIDGET (self)); + + self->read_write_calendars_model = gcal_create_writable_calendars_model (manager); + + bind_model (self); + + /* Connect to the manager signals and keep the list updates */ + g_signal_connect_object (manager, + "notify::default-calendar", + G_CALLBACK (bind_model), + self, + G_CONNECT_SWAPPED); + + g_signal_connect_object (context, + "notify::time-format", + G_CALLBACK (update_header), + self, + G_CONNECT_SWAPPED); } GtkWidget* diff --git a/src/gui/gcal-window.c b/src/gui/gcal-window.c index e320fd06..53a39faf 100644 --- a/src/gui/gcal-window.c +++ b/src/gui/gcal-window.c @@ -1225,7 +1225,6 @@ gcal_window_constructed (GObject *object) * FIXME: this is a hack around the issue that happens when trying to bind * these properties using the GtkBuilder .ui file. */ - g_object_bind_property (self, "context", self->quick_add_popover, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); g_object_bind_property (self, "context", self->sync_indicator, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); g_object_bind_property (self, "context", self->search_button, "context", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);