summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2023-03-03 19:21:23 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2023-03-03 19:50:30 -0300
commit0e8332b07bab2d851e13f3be3bfa67356dd76f73 (patch)
treee071fcc6bb280728f2f4e1ecbf2c635aa4c6113b /src
parent4f9d7de0326d11d77078ca11233a47cc934991bb (diff)
downloadgnome-calendar-0e8332b07bab2d851e13f3be3bfa67356dd76f73.tar.gz
calendar-management/new: Switch to a GtkDialog
The implementation of the credentials popover has relied on a hack, and sadly this hack doesn't work anymore. It's too late for a redesign, so for now, just put it into a dialog and show it on top of the calendar management dialog.
Diffstat (limited to 'src')
-rw-r--r--src/gui/calendar-management/gcal-new-calendar-page.c21
-rw-r--r--src/gui/calendar-management/gcal-new-calendar-page.ui57
2 files changed, 45 insertions, 33 deletions
diff --git a/src/gui/calendar-management/gcal-new-calendar-page.c b/src/gui/calendar-management/gcal-new-calendar-page.c
index 1aff6635..2993553b 100644
--- a/src/gui/calendar-management/gcal-new-calendar-page.c
+++ b/src/gui/calendar-management/gcal-new-calendar-page.c
@@ -52,8 +52,8 @@ struct _GcalNewCalendarPage
GtkWidget *cancel_button;
GtkWidget *credentials_cancel_button;
GtkWidget *credentials_connect_button;
+ GtkWindow *credentials_dialog;
GtkEntry *credentials_password_entry;
- GtkWidget *credentials_popover;
GtkEntry *credentials_user_entry;
GtkColorChooser *local_calendar_color_button;
GtkEntry *local_calendar_name_entry;
@@ -238,12 +238,12 @@ discover_sources (GcalNewCalendarPage *self)
}
static void
-popdown_credentials_popover (GcalNewCalendarPage *self)
+hide_credentials_dialog (GcalNewCalendarPage *self)
{
gtk_editable_set_text (GTK_EDITABLE (self->credentials_user_entry), "");
gtk_editable_set_text (GTK_EDITABLE (self->credentials_password_entry), "");
- gtk_popover_popdown (GTK_POPOVER (self->credentials_popover));
+ gtk_window_close (self->credentials_dialog);
}
/*
@@ -322,8 +322,13 @@ sources_discovered_cb (GObject *source_object,
GCAL_SOURCE_DISCOVERER_ERROR,
GCAL_SOURCE_DISCOVERER_ERROR_UNAUTHORIZED))
{
+ GtkRoot *root;
+
g_debug ("Unauthorized, asking for credentials...");
- gtk_popover_popup (GTK_POPOVER (self->credentials_popover));
+
+ root = gtk_widget_get_root (GTK_WIDGET (self));
+ gtk_window_set_transient_for (self->credentials_dialog, GTK_WINDOW (root));
+ gtk_window_present (self->credentials_dialog);
}
else
{
@@ -410,7 +415,7 @@ on_credential_button_clicked_cb (GtkWidget *button,
else
update_url_entry_state (self, ENTRY_STATE_INVALID);
- popdown_credentials_popover (self);
+ hide_credentials_dialog (self);
}
static void
@@ -418,7 +423,7 @@ on_credential_entry_activate_cb (GtkEntry *entry,
GcalNewCalendarPage *self)
{
discover_sources (self);
- popdown_credentials_popover (self);
+ hide_credentials_dialog (self);
}
static void
@@ -658,8 +663,8 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass)
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, cancel_button);
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_cancel_button);
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_connect_button);
+ gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_dialog);
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_password_entry);
- gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_popover);
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_user_entry);
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, local_calendar_color_button);
gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, local_calendar_name_entry);
@@ -691,6 +696,4 @@ gcal_new_calendar_page_init (GcalNewCalendarPage *self)
chooser = gcal_file_chooser_button_get_filechooser (self->calendar_file_chooser_button);
gtk_file_chooser_add_filter (chooser, self->calendar_file_filter);
-
- gtk_widget_set_parent (self->credentials_popover, GTK_WIDGET (self->calendar_address_entry));
}
diff --git a/src/gui/calendar-management/gcal-new-calendar-page.ui b/src/gui/calendar-management/gcal-new-calendar-page.ui
index 6036ec23..62f598c3 100644
--- a/src/gui/calendar-management/gcal-new-calendar-page.ui
+++ b/src/gui/calendar-management/gcal-new-calendar-page.ui
@@ -171,8 +171,39 @@
</template>
<!-- Credentials popover -->
- <object class="GtkPopover" id="credentials_popover">
- <property name="position">top</property>
+ <object class="GtkWindow" id="credentials_dialog">
+ <property name="title" translatable="yes">Credentials</property>
+ <property name="modal">True</property>
+ <property name="hide-on-close">True</property>
+ <property name="default-width">350</property>
+ <property name="default-height">150</property>
+
+ <child type="titlebar">
+ <object class="GtkHeaderBar">
+ <property name="show-title-buttons">False</property>
+
+ <child type="start">
+ <object class="GtkButton" id="credentials_cancel_button">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Cancel</property>
+ <signal name="clicked" handler="on_credential_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
+ </object>
+ </child>
+
+ <child type="end">
+ <object class="GtkButton" id="credentials_connect_button">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Connect</property>
+ <signal name="clicked" handler="on_credential_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
+ <style>
+ <class name="suggested-action" />
+ </style>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
@@ -239,28 +270,6 @@
</object>
</child>
- <child>
- <object class="GtkBox">
- <property name="spacing">12</property>
- <child>
- <object class="GtkButton" id="credentials_cancel_button">
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Cancel</property>
- <signal name="clicked" handler="on_credential_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
- </object>
- </child>
- <child>
- <object class="GtkButton" id="credentials_connect_button">
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Connect</property>
- <signal name="clicked" handler="on_credential_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" />
- <style>
- <class name="suggested-action" />
- </style>
- </object>
- </child>
- </object>
- </child>
</object>
</child>
</object>