From 2038ff1da1a155aab478818ba7350d554f3cbf9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20Iv=C3=A1n?= Date: Mon, 22 Jul 2024 23:04:39 -0600 Subject: [PATCH] import-dialog: Port to AdwDialog This also brings some other changes: * Enables closing the window using Escape * Fixes a few criticals Closes #1258 --- src/gui/gcal-window.c | 10 ++++----- src/gui/importer/gcal-import-dialog.c | 17 ++++------------ src/gui/importer/gcal-import-dialog.h | 2 +- src/gui/importer/gcal-import-dialog.ui | 28 +++++++++++++++++--------- 4 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/gui/gcal-window.c b/src/gui/gcal-window.c index 1c0521d4..d0bb668f 100644 --- a/src/gui/gcal-window.c +++ b/src/gui/gcal-window.c @@ -116,7 +116,7 @@ struct _GcalWindow GtkWidget *views_switcher; GcalEventEditorDialog *event_editor; - GtkWindow *import_dialog; + GtkWidget *import_dialog; /* new event popover widgets */ GtkWidget *quick_add_popover; @@ -830,6 +830,7 @@ gcal_window_dispose (GObject *object) gcal_timeline_remove_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->date_chooser)); g_clear_pointer (&self->quick_add_popover, gtk_widget_unparent); + g_clear_pointer (&self->import_dialog, gtk_widget_unparent); if (self->delete_event_toast) adw_toast_dismiss (self->delete_event_toast); @@ -1220,11 +1221,10 @@ gcal_window_import_files (GcalWindow *self, { g_return_if_fail (GCAL_IS_WINDOW (self)); - g_clear_pointer (&self->import_dialog, gtk_window_destroy); + g_clear_pointer (&self->import_dialog, gtk_widget_unparent); - self->import_dialog = GTK_WINDOW (gcal_import_dialog_new_for_files (self->context, files, n_files)); - gtk_window_set_transient_for (self->import_dialog, GTK_WINDOW (self)); - gtk_window_present (self->import_dialog); + self->import_dialog = gcal_import_dialog_new_for_files (self->context, files, n_files); + adw_dialog_present (ADW_DIALOG (self->import_dialog), GTK_WIDGET (self)); g_object_add_weak_pointer (G_OBJECT (self->import_dialog), (gpointer *)&self->import_dialog); } diff --git a/src/gui/importer/gcal-import-dialog.c b/src/gui/importer/gcal-import-dialog.c index 0810339d..68142f5a 100644 --- a/src/gui/importer/gcal-import-dialog.c +++ b/src/gui/importer/gcal-import-dialog.c @@ -39,7 +39,7 @@ typedef struct struct _GcalImportDialog { - AdwWindow parent; + AdwDialog parent; GtkWidget *cancel_button; AdwComboRow *calendar_combo_row; @@ -64,7 +64,7 @@ static void on_import_row_file_loaded_cb (GcalImportFil GPtrArray *events, GcalImportDialog *self); -G_DEFINE_TYPE (GcalImportDialog, gcal_import_dialog, ADW_TYPE_WINDOW) +G_DEFINE_TYPE (GcalImportDialog, gcal_import_dialog, ADW_TYPE_DIALOG) enum { @@ -185,7 +185,7 @@ on_events_created_cb (GObject *source_object, if (error) g_warning ("Error creating events: %s", error->message); - gtk_window_destroy (GTK_WINDOW (self)); + adw_dialog_close (ADW_DIALOG (self)); GCAL_EXIT; } @@ -202,13 +202,6 @@ on_calendar_combo_row_selected_item_changed_cb (AdwComboRow *combo_row, GCAL_EXIT; } -static void -on_cancel_button_clicked_cb (GtkButton *button, - GcalImportDialog *self) -{ - gtk_window_destroy (GTK_WINDOW (self)); -} - static void on_combo_row_signal_factory_setup_cb (GtkSignalListItemFactory *factory, GtkListItem *item, @@ -397,7 +390,7 @@ on_import_row_file_loaded_cb (GcalImportFileRow *row, "Import %d events", self->n_events), self->n_events); - gtk_window_set_title (GTK_WINDOW (self), title); + adw_dialog_set_title (ADW_DIALOG (self), title); gtk_widget_set_visible (GTK_WIDGET (row), TRUE); @@ -508,7 +501,6 @@ gcal_import_dialog_class_init (GcalImportDialogClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalImportDialog, title_sizegroup); gtk_widget_class_bind_template_callback (widget_class, on_calendar_combo_row_selected_item_changed_cb); - gtk_widget_class_bind_template_callback (widget_class, on_cancel_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_import_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_combo_row_signal_factory_bind_cb); gtk_widget_class_bind_template_callback (widget_class, on_combo_row_signal_factory_setup_cb); @@ -529,7 +521,6 @@ gcal_import_dialog_new_for_files (GcalContext *context, self = g_object_new (GCAL_TYPE_IMPORT_DIALOG, "context", context, - "use-header-bar", TRUE, NULL); setup_files (self, files, n_files); diff --git a/src/gui/importer/gcal-import-dialog.h b/src/gui/importer/gcal-import-dialog.h index 2f5e73ec..00973908 100644 --- a/src/gui/importer/gcal-import-dialog.h +++ b/src/gui/importer/gcal-import-dialog.h @@ -27,7 +27,7 @@ G_BEGIN_DECLS #define GCAL_TYPE_IMPORT_DIALOG (gcal_import_dialog_get_type()) -G_DECLARE_FINAL_TYPE (GcalImportDialog, gcal_import_dialog, GCAL, IMPORT_DIALOG, AdwWindow) +G_DECLARE_FINAL_TYPE (GcalImportDialog, gcal_import_dialog, GCAL, IMPORT_DIALOG, AdwDialog) GtkWidget* gcal_import_dialog_new_for_files (GcalContext *context, GFile **files, diff --git a/src/gui/importer/gcal-import-dialog.ui b/src/gui/importer/gcal-import-dialog.ui index 3ff5dab6..141d1bd2 100644 --- a/src/gui/importer/gcal-import-dialog.ui +++ b/src/gui/importer/gcal-import-dialog.ui @@ -1,14 +1,10 @@ -