import-dialog: Port to AdwDialog

This also brings some other changes:

* Enables closing the window using Escape
* Fixes a few criticals

Closes #1258
This commit is contained in:
Diego Iván
2024-07-24 16:00:59 +00:00
committed by Georges Basile Stavracas Neto
parent e00d8cbf66
commit 2038ff1da1
4 changed files with 28 additions and 29 deletions
+5 -5
View File
@@ -116,7 +116,7 @@ struct _GcalWindow
GtkWidget *views_switcher; GtkWidget *views_switcher;
GcalEventEditorDialog *event_editor; GcalEventEditorDialog *event_editor;
GtkWindow *import_dialog; GtkWidget *import_dialog;
/* new event popover widgets */ /* new event popover widgets */
GtkWidget *quick_add_popover; GtkWidget *quick_add_popover;
@@ -830,6 +830,7 @@ gcal_window_dispose (GObject *object)
gcal_timeline_remove_subscriber (timeline, GCAL_TIMELINE_SUBSCRIBER (self->date_chooser)); 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->quick_add_popover, gtk_widget_unparent);
g_clear_pointer (&self->import_dialog, gtk_widget_unparent);
if (self->delete_event_toast) if (self->delete_event_toast)
adw_toast_dismiss (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_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)); self->import_dialog = gcal_import_dialog_new_for_files (self->context, files, n_files);
gtk_window_set_transient_for (self->import_dialog, GTK_WINDOW (self)); adw_dialog_present (ADW_DIALOG (self->import_dialog), GTK_WIDGET (self));
gtk_window_present (self->import_dialog);
g_object_add_weak_pointer (G_OBJECT (self->import_dialog), (gpointer *)&self->import_dialog); g_object_add_weak_pointer (G_OBJECT (self->import_dialog), (gpointer *)&self->import_dialog);
} }
+4 -13
View File
@@ -39,7 +39,7 @@ typedef struct
struct _GcalImportDialog struct _GcalImportDialog
{ {
AdwWindow parent; AdwDialog parent;
GtkWidget *cancel_button; GtkWidget *cancel_button;
AdwComboRow *calendar_combo_row; AdwComboRow *calendar_combo_row;
@@ -64,7 +64,7 @@ static void on_import_row_file_loaded_cb (GcalImportFil
GPtrArray *events, GPtrArray *events,
GcalImportDialog *self); GcalImportDialog *self);
G_DEFINE_TYPE (GcalImportDialog, gcal_import_dialog, ADW_TYPE_WINDOW) G_DEFINE_TYPE (GcalImportDialog, gcal_import_dialog, ADW_TYPE_DIALOG)
enum enum
{ {
@@ -185,7 +185,7 @@ on_events_created_cb (GObject *source_object,
if (error) if (error)
g_warning ("Error creating events: %s", error->message); g_warning ("Error creating events: %s", error->message);
gtk_window_destroy (GTK_WINDOW (self)); adw_dialog_close (ADW_DIALOG (self));
GCAL_EXIT; GCAL_EXIT;
} }
@@ -202,13 +202,6 @@ on_calendar_combo_row_selected_item_changed_cb (AdwComboRow *combo_row,
GCAL_EXIT; GCAL_EXIT;
} }
static void
on_cancel_button_clicked_cb (GtkButton *button,
GcalImportDialog *self)
{
gtk_window_destroy (GTK_WINDOW (self));
}
static void static void
on_combo_row_signal_factory_setup_cb (GtkSignalListItemFactory *factory, on_combo_row_signal_factory_setup_cb (GtkSignalListItemFactory *factory,
GtkListItem *item, GtkListItem *item,
@@ -397,7 +390,7 @@ on_import_row_file_loaded_cb (GcalImportFileRow *row,
"Import %d events", "Import %d events",
self->n_events), self->n_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); 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_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_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_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_bind_cb);
gtk_widget_class_bind_template_callback (widget_class, on_combo_row_signal_factory_setup_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, self = g_object_new (GCAL_TYPE_IMPORT_DIALOG,
"context", context, "context", context,
"use-header-bar", TRUE,
NULL); NULL);
setup_files (self, files, n_files); setup_files (self, files, n_files);
+1 -1
View File
@@ -27,7 +27,7 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define GCAL_TYPE_IMPORT_DIALOG (gcal_import_dialog_get_type()) #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, GtkWidget* gcal_import_dialog_new_for_files (GcalContext *context,
GFile **files, GFile **files,
+18 -10
View File
@@ -1,14 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<template class="GcalImportDialog" parent="AdwWindow"> <template class="GcalImportDialog" parent="AdwDialog">
<property name="title" translatable="yes">Import Files…</property> <property name="title" translatable="yes">Import Files…</property>
<property name="width-request">360</property> <property name="content-width">500</property>
<property name="height-request">294</property> <property name="content-height">500</property>
<property name="default-width">550</property> <child>
<property name="default-height">500</property>
<property name="modal">True</property>
<property name="destroy-with-parent">True</property>
<property name="content">
<object class="AdwToolbarView"> <object class="AdwToolbarView">
<child type="top"> <child type="top">
<object class="GtkHeaderBar" id="headerbar"> <object class="GtkHeaderBar" id="headerbar">
@@ -19,7 +15,7 @@
<object class="GtkButton" id="cancel_button"> <object class="GtkButton" id="cancel_button">
<property name="label" translatable="yes">_Cancel</property> <property name="label" translatable="yes">_Cancel</property>
<property name="use-underline">True</property> <property name="use-underline">True</property>
<signal name="clicked" handler="on_cancel_button_clicked_cb" object="GcalImportDialog" swapped="no" /> <property name="action-name">sheet.close</property>
</object> </object>
</child> </child>
@@ -77,7 +73,19 @@
</object> </object>
</property> </property>
</object> </object>
</property> </child>
<!-- Shortcuts -->
<child>
<object class="GtkShortcutController">
<child>
<object class="GtkShortcut">
<property name="trigger">Escape</property>
<property name="action">action(sheet.close)</property>
</object>
</child>
</object>
</child>
</template> </template>
<object class="GtkSizeGroup" id="title_sizegroup"> <object class="GtkSizeGroup" id="title_sizegroup">