display: Use AdwLeaflet in CcDisplayPanel

This makes the transition between the main page, night light,
and display preferences more inline with other GNOME apps
using GTK4.
This commit is contained in:
Georges Basile Stavracas Neto 2022-01-13 16:13:55 -03:00
parent 06caebd0ba
commit 9d324452c5
2 changed files with 11 additions and 13 deletions

View file

@ -99,8 +99,8 @@ struct _CcDisplayPanel
GtkWidget *config_type_switcher_row;
AdwBin *display_settings_bin;
GtkWidget *display_settings_group;
AdwLeaflet *leaflet;
AdwComboRow *primary_display_row;
GtkStack *stack;
AdwPreferencesGroup *single_display_settings_group;
GtkShortcutController *toplevel_shortcuts;
@ -465,7 +465,7 @@ static void
on_back_button_clicked_cb (GtkButton *button,
CcDisplayPanel *self)
{
gtk_stack_set_visible_child_name (self->stack, "displays");
adw_leaflet_set_visible_child_name (self->leaflet, "displays");
}
static void
@ -523,7 +523,7 @@ static void
on_night_light_row_activated_cb (GtkListBoxRow *row,
CcDisplayPanel *self)
{
gtk_stack_set_visible_child_name (self->stack, "night-light");
adw_leaflet_set_visible_child_name (self->leaflet, "night-light");
}
static void
@ -549,7 +549,7 @@ on_stack_visible_child_name_changed_cb (GtkStack *stack,
GParamSpec *pspec,
CcDisplayPanel *self)
{
const gchar *visible_child_name = gtk_stack_get_visible_child_name (self->stack);
const gchar *visible_child_name = adw_leaflet_get_visible_child_name (self->leaflet);
gtk_widget_set_visible (self->back_button, g_strcmp0 (visible_child_name, "displays") != 0);
}
@ -626,10 +626,10 @@ cc_display_panel_class_init (CcDisplayPanelClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, display_settings_bin);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, display_settings_group);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, escape_shortcut);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, leaflet);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, night_light_page);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, night_light_state_label);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, primary_display_row);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, stack);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, single_display_settings_group);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, toplevel_shortcuts);
@ -677,7 +677,7 @@ on_monitor_row_activated_cb (GtkListBoxRow *row,
monitor = g_object_get_data (G_OBJECT (row), "monitor");
set_current_output (self, monitor, FALSE);
gtk_stack_set_visible_child_name (self->stack, "display-settings");
adw_leaflet_set_visible_child_name (self->leaflet, "display-settings");
}
static void

View file

@ -17,15 +17,14 @@
</child>
<child>
<object class="GtkStack" id="stack">
<property name="transition-type">crossfade</property>
<object class="AdwLeaflet" id="leaflet">
<property name="can-unfold">False</property>
<signal name="notify::visible-child-name" handler="on_stack_visible_child_name_changed_cb" object="CcDisplayPanel" swapped="no" />
<!-- Displays page -->
<child>
<object class="GtkStackPage">
<object class="AdwLeafletPage">
<property name="name">displays</property>
<property name="title" translatable="yes">Displays</property>
<property name="child">
<object class="GtkScrolledWindow">
<property name="hscrollbar_policy">never</property>
@ -149,9 +148,8 @@
<!-- Night Light page -->
<child>
<object class="GtkStackPage">
<object class="AdwLeafletPage">
<property name="name">night-light</property>
<property name="title" translatable="yes" comments="This is the redshift functionality where we suppress blue light when the sun has gone down">Night Light</property>
<property name="child">
<object class="CcNightLightPage" id="night_light_page" />
</property>
@ -160,7 +158,7 @@
<!-- Display Settings page -->
<child>
<object class="GtkStackPage">
<object class="AdwLeafletPage">
<property name="name">display-settings</property>
<property name="child">
<object class="AdwPreferencesPage">