summaryrefslogtreecommitdiff
path: root/panels
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2022-01-19 18:38:32 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2022-01-20 02:23:42 +0000
commit4300a4a2908d0c81f427745e55b570dbdd6726ba (patch)
tree0fbea041d58e461ea39156f5b8f7e3a197cce904 /panels
parent0ab20af9ba243f9e087b5cd1d0a32e5661ea3dda (diff)
downloadgnome-control-center-4300a4a2908d0c81f427745e55b570dbdd6726ba.tar.gz
panels: Use new CcPanel helpers for title widgets
This should significantly simplify these panels, by not forcing them to override GObject.constructed all the time. Most panels were quite straightfoward.
Diffstat (limited to 'panels')
-rw-r--r--panels/applications/cc-applications-panel.c12
-rw-r--r--panels/applications/cc-applications-panel.ui38
-rw-r--r--panels/bluetooth/cc-bluetooth-panel.c13
-rw-r--r--panels/bluetooth/cc-bluetooth-panel.ui20
-rw-r--r--panels/camera/cc-camera-panel.c44
-rw-r--r--panels/camera/cc-camera-panel.ui7
-rw-r--r--panels/datetime/cc-datetime-panel.c13
-rw-r--r--panels/datetime/cc-datetime-panel.ui9
-rw-r--r--panels/display/cc-display-panel.c3
-rw-r--r--panels/display/cc-display-panel.ui17
-rw-r--r--panels/location/cc-location-panel.c51
-rw-r--r--panels/location/cc-location-panel.ui7
-rw-r--r--panels/microphone/cc-microphone-panel.c45
-rw-r--r--panels/microphone/cc-microphone-panel.ui7
-rw-r--r--panels/mouse/cc-mouse-panel.c14
-rw-r--r--panels/mouse/cc-mouse-panel.ui22
-rw-r--r--panels/network/cc-wifi-panel.c24
-rw-r--r--panels/network/cc-wifi-panel.ui60
-rw-r--r--panels/printers/cc-printers-panel.c9
-rw-r--r--panels/search/cc-search-panel.c60
-rw-r--r--panels/search/cc-search-panel.ui21
-rw-r--r--panels/sharing/cc-sharing-panel.c27
-rw-r--r--panels/sharing/cc-sharing-panel.ui10
-rw-r--r--panels/thunderbolt/cc-bolt-panel.c6
-rw-r--r--panels/thunderbolt/cc-bolt-panel.ui24
-rw-r--r--panels/wacom/cc-wacom-panel.c52
-rw-r--r--panels/wwan/cc-wwan-panel.c26
-rw-r--r--panels/wwan/cc-wwan-panel.ui16
28 files changed, 281 insertions, 376 deletions
diff --git a/panels/applications/cc-applications-panel.c b/panels/applications/cc-applications-panel.c
index 74ffd834d..163d55910 100644
--- a/panels/applications/cc-applications-panel.c
+++ b/panels/applications/cc-applications-panel.c
@@ -1936,13 +1936,9 @@ cc_applications_panel_constructed (GObject *object)
{
CcApplicationsPanel *self = CC_APPLICATIONS_PANEL (object);
GtkListBoxRow *row;
- CcShell *shell;
G_OBJECT_CLASS (cc_applications_panel_parent_class)->constructed (object);
- shell = cc_panel_get_shell (CC_PANEL (self));
- cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->header_button), GTK_POS_RIGHT);
-
/* Select the first row */
row = gtk_list_box_get_row_at_index (self->sidebar_listbox, 0);
gtk_list_box_select_row (self->sidebar_listbox, row);
@@ -1955,13 +1951,6 @@ cc_applications_panel_get_sidebar_widget (CcPanel *panel)
return GTK_WIDGET (self->sidebar_box);
}
-static GtkWidget *
-cc_applications_panel_get_title_widget (CcPanel *panel)
-{
- CcApplicationsPanel *self = CC_APPLICATIONS_PANEL (panel);
- return GTK_WIDGET (self->title_label);
-}
-
static void
cc_applications_panel_class_init (CcApplicationsPanelClass *klass)
{
@@ -1975,7 +1964,6 @@ cc_applications_panel_class_init (CcApplicationsPanelClass *klass)
object_class->set_property = cc_applications_panel_set_property;
panel_class->get_sidebar_widget = cc_applications_panel_get_sidebar_widget;
- panel_class->get_title_widget = cc_applications_panel_get_title_widget;
g_object_class_override_property (object_class, PROP_PARAMETERS, "parameters");
diff --git a/panels/applications/cc-applications-panel.ui b/panels/applications/cc-applications-panel.ui
index 7316de7fc..98ea10fdd 100644
--- a/panels/applications/cc-applications-panel.ui
+++ b/panels/applications/cc-applications-panel.ui
@@ -1,6 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CcApplicationsPanel" parent="CcPanel">
+
+ <child type="titlebar">
+ <object class="AdwHeaderBar">
+ <property name="show-end-title-buttons">True</property>
+ <property name="show-start-title-buttons">False</property>
+ <child type="start">
+ <object class="GtkButton">
+ <property name="visible" bind-source="CcApplicationsPanel" bind-property="folded" bind-flags="default|sync-create" />
+ <property name="icon-name">go-previous-symbolic</property>
+ </object>
+ </child>
+ <property name="title-widget">
+ <object class="GtkLabel" id="title_label">
+ <property name="label" translatable="yes">Applications</property>
+ <property name="ellipsize">end</property>
+ <style>
+ <class name="title"/>
+ </style>
+ </object>
+ </property>
+ <child type="end">
+ <object class="GtkButton" id="header_button">
+ <property name="label" translatable="yes">Open in Software</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkScrolledWindow" id="main_scroll">
<property name="hscrollbar-policy">never</property>
@@ -371,16 +399,6 @@
</object>
</child>
</template>
- <object class="GtkLabel" id="title_label">
- <property name="label" translatable="yes">Applications</property>
- <property name="ellipsize">end</property>
- <style>
- <class name="title"/>
- </style>
- </object>
- <object class="GtkButton" id="header_button">
- <property name="label" translatable="yes">Open in Software</property>
- </object>
<!-- Sidebar -->
<object class="GtkBox" id="sidebar_box">
diff --git a/panels/bluetooth/cc-bluetooth-panel.c b/panels/bluetooth/cc-bluetooth-panel.c
index 5c04ef0b2..175e36550 100644
--- a/panels/bluetooth/cc-bluetooth-panel.c
+++ b/panels/bluetooth/cc-bluetooth-panel.c
@@ -74,18 +74,6 @@ cc_bluetooth_panel_finalize (GObject *object)
}
static void
-cc_bluetooth_panel_constructed (GObject *object)
-{
- CcBluetoothPanel *self = CC_BLUETOOTH_PANEL (object);
-
- G_OBJECT_CLASS (cc_bluetooth_panel_parent_class)->constructed (object);
-
- /* add kill switch widgets */
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)),
- GTK_WIDGET (self->header_box), GTK_POS_RIGHT);
-}
-
-static void
airplane_mode_changed_cb (GObject *source_object,
GAsyncResult *res,
gpointer user_data)
@@ -232,7 +220,6 @@ cc_bluetooth_panel_class_init (CcBluetoothPanelClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
- object_class->constructed = cc_bluetooth_panel_constructed;
object_class->finalize = cc_bluetooth_panel_finalize;
panel_class->get_help_uri = cc_bluetooth_panel_get_help_uri;
diff --git a/panels/bluetooth/cc-bluetooth-panel.ui b/panels/bluetooth/cc-bluetooth-panel.ui
index 0b98de458..294ead36a 100644
--- a/panels/bluetooth/cc-bluetooth-panel.ui
+++ b/panels/bluetooth/cc-bluetooth-panel.ui
@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CcBluetoothPanel" parent="CcPanel">
+
+ <child type="titlebar-end">
+ <object class="GtkBox" id="header_box">
+ <child>
+ <object class="GtkSwitch" id="enable_switch">
+ <property name="valign">center</property>
+ <signal name="state-set" handler="enable_switch_state_set_cb" object="CcBluetoothPanel" swapped="yes"/>
+ </object>
+ </child>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkStack" id="stack">
<child>
@@ -51,12 +63,4 @@
</object>
</child>
</template>
- <object class="GtkBox" id="header_box">
- <child>
- <object class="GtkSwitch" id="enable_switch">
- <property name="valign">center</property>
- <signal name="state-set" handler="enable_switch_state_set_cb" object="CcBluetoothPanel" swapped="yes"/>
- </object>
- </child>
- </object>
</interface>
diff --git a/panels/camera/cc-camera-panel.c b/panels/camera/cc-camera-panel.c
index c78a245de..3965b67c4 100644
--- a/panels/camera/cc-camera-panel.c
+++ b/panels/camera/cc-camera-panel.c
@@ -35,6 +35,7 @@ struct _CcCameraPanel
GtkStack *stack;
GtkListBox *camera_apps_list_box;
+ GtkSwitch *main_switch;
GSettings *privacy_settings;
@@ -359,37 +360,6 @@ cc_camera_panel_get_help_uri (CcPanel *panel)
}
static void
-cc_camera_panel_constructed (GObject *object)
-{
- CcCameraPanel *self = CC_CAMERA_PANEL (object);
- GtkWidget *box, *widget;
-
- G_OBJECT_CLASS (cc_camera_panel_parent_class)->constructed (object);
-
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_widget_show (box);
-
- widget = gtk_switch_new ();
- gtk_widget_show (widget);
- gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- gtk_box_append (GTK_BOX (box), widget);
-
- g_settings_bind (self->privacy_settings, "disable-camera",
- widget, "active",
- G_SETTINGS_BIND_INVERT_BOOLEAN);
- g_object_bind_property_full (widget, "active",
- self->stack, "visible-child-name",
- G_BINDING_SYNC_CREATE,
- to_child_name,
- NULL,
- NULL, NULL);
-
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)),
- box,
- GTK_POS_RIGHT);
-}
-
-static void
cc_camera_panel_class_init (CcCameraPanelClass *klass)
{
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
@@ -399,12 +369,12 @@ cc_camera_panel_class_init (CcCameraPanelClass *klass)
panel_class->get_help_uri = cc_camera_panel_get_help_uri;
object_class->finalize = cc_camera_panel_finalize;
- object_class->constructed = cc_camera_panel_constructed;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/camera/cc-camera-panel.ui");
gtk_widget_class_bind_template_child (widget_class, CcCameraPanel, stack);
gtk_widget_class_bind_template_child (widget_class, CcCameraPanel, camera_apps_list_box);
+ gtk_widget_class_bind_template_child (widget_class, CcCameraPanel, main_switch);
}
static void
@@ -418,6 +388,16 @@ cc_camera_panel_init (CcCameraPanel *self)
self->privacy_settings = g_settings_new ("org.gnome.desktop.privacy");
+ g_settings_bind (self->privacy_settings, "disable-camera",
+ self->main_switch, "active",
+ G_SETTINGS_BIND_INVERT_BOOLEAN);
+
+ g_object_bind_property_full (self->main_switch, "active",
+ self->stack, "visible-child-name",
+ G_BINDING_SYNC_CREATE,
+ to_child_name,
+ NULL,
+ NULL, NULL);
self->camera_app_switches = g_hash_table_new_full (g_str_hash,
g_str_equal,
diff --git a/panels/camera/cc-camera-panel.ui b/panels/camera/cc-camera-panel.ui
index e4c6d897d..256b1f9f5 100644
--- a/panels/camera/cc-camera-panel.ui
+++ b/panels/camera/cc-camera-panel.ui
@@ -1,6 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CcCameraPanel" parent="CcPanel">
+
+ <child type="titlebar-end">
+ <object class="GtkSwitch" id="main_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkStack" id="stack">
diff --git a/panels/datetime/cc-datetime-panel.c b/panels/datetime/cc-datetime-panel.c
index 2d3414ecb..68617d934 100644
--- a/panels/datetime/cc-datetime-panel.c
+++ b/panels/datetime/cc-datetime-panel.c
@@ -157,18 +157,6 @@ cc_date_time_panel_dispose (GObject *object)
G_OBJECT_CLASS (cc_date_time_panel_parent_class)->dispose (object);
}
-static void
-cc_date_time_panel_constructed (GObject *object)
-{
- CcDateTimePanel *self = CC_DATE_TIME_PANEL (object);
-
- G_OBJECT_CLASS (cc_date_time_panel_parent_class)->constructed (object);
-
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)),
- GTK_WIDGET (self->lock_button),
- GTK_POS_RIGHT);
-}
-
static const char *
cc_date_time_panel_get_help_uri (CcPanel *panel)
{
@@ -963,7 +951,6 @@ cc_date_time_panel_class_init (CcDateTimePanelClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
- object_class->constructed = cc_date_time_panel_constructed;
object_class->dispose = cc_date_time_panel_dispose;
panel_class->get_help_uri = cc_date_time_panel_get_help_uri;
diff --git a/panels/datetime/cc-datetime-panel.ui b/panels/datetime/cc-datetime-panel.ui
index 44e4e2203..ec671e247 100644
--- a/panels/datetime/cc-datetime-panel.ui
+++ b/panels/datetime/cc-datetime-panel.ui
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <object class="GtkLockButton" id="lock_button">
- </object>
<object class="GtkListStore" id="city_liststore">
<columns>
<!-- column-name city-human-readable -->
@@ -297,6 +295,13 @@
</child>
</object>
<template class="CcDateTimePanel" parent="CcPanel">
+
+ <child type="titlebar-end">
+ <object class="GtkLockButton" id="lock_button">
+ <property name="valign">center</property>
+ </object>
+ </child>
+
<child type="content">
<object class="AdwPreferencesPage">
<child>
diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c
index 8b5fb2998..c9015d16f 100644
--- a/panels/display/cc-display-panel.c
+++ b/panels/display/cc-display-panel.c
@@ -580,7 +580,6 @@ on_toplevel_escape_pressed_cb (GtkWidget *widget,
static void
cc_display_panel_constructed (GObject *object)
{
- CcDisplayPanel *self = CC_DISPLAY_PANEL (object);
CcShell *shell = cc_panel_get_shell (CC_PANEL (object));
GtkWidget *toplevel = cc_shell_get_toplevel (shell);
@@ -591,8 +590,6 @@ cc_display_panel_constructed (GObject *object)
on_toplevel_folded (CC_DISPLAY_PANEL (object), NULL, toplevel);
G_OBJECT_CLASS (cc_display_panel_parent_class)->constructed (object);
-
- cc_shell_embed_widget_in_header (shell, self->back_button, GTK_POS_LEFT);
}
static const char *
diff --git a/panels/display/cc-display-panel.ui b/panels/display/cc-display-panel.ui
index ac733f724..22350b271 100644
--- a/panels/display/cc-display-panel.ui
+++ b/panels/display/cc-display-panel.ui
@@ -15,6 +15,14 @@
</object>
</child>
+ <child type="titlebar-start">
+ <object class="GtkButton" id="back_button">
+ <property name="visible">False</property>
+ <property name="icon-name">go-previous-symbolic</property>
+ <signal name="clicked" handler="on_back_button_clicked_cb" object="CcDisplayPanel" swapped="no" />
+ </object>
+ </child>
+
<child type="content">
<object class="AdwLeaflet" id="leaflet">
<property name="can-unfold">False</property>
@@ -176,13 +184,4 @@
</object>
</child>
</template>
-
- <object class="GtkButton" id="back_button">
- <property name="visible">False</property>
- <property name="icon-name">go-previous-symbolic</property>
- <signal name="clicked" handler="on_back_button_clicked_cb" object="CcDisplayPanel" swapped="no" />
- <style>
- <class name="flat" />
- </style>
- </object>
</interface>
diff --git a/panels/location/cc-location-panel.c b/panels/location/cc-location-panel.c
index ef8cf4589..4e1077ee3 100644
--- a/panels/location/cc-location-panel.c
+++ b/panels/location/cc-location-panel.c
@@ -36,6 +36,7 @@ struct _CcLocationPanel
GtkStack *stack;
GtkListBox *location_apps_list_box;
+ GtkSwitch *main_switch;
GSettings *location_settings;
@@ -367,39 +368,6 @@ cc_location_panel_get_help_uri (CcPanel *panel)
}
static void
-cc_location_panel_constructed (GObject *object)
-{
- CcLocationPanel *self = CC_LOCATION_PANEL (object);
- GtkWidget *box, *widget;
-
- G_OBJECT_CLASS (cc_location_panel_parent_class)->constructed (object);
-
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- widget = gtk_switch_new ();
- gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- gtk_box_append (GTK_BOX (box), widget);
-
- g_settings_bind (self->location_settings,
- LOCATION_ENABLED,
- widget,
- "active",
- G_SETTINGS_BIND_DEFAULT);
-
- g_object_bind_property_full (widget,
- "active",
- self->stack,
- "visible-child-name",
- G_BINDING_SYNC_CREATE,
- to_child_name,
- NULL,
- NULL, NULL);
-
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)),
- box,
- GTK_POS_RIGHT);
-}
-
-static void
cc_location_panel_class_init (CcLocationPanelClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
@@ -409,12 +377,12 @@ cc_location_panel_class_init (CcLocationPanelClass *klass)
panel_class->get_help_uri = cc_location_panel_get_help_uri;
object_class->finalize = cc_location_panel_finalize;
- object_class->constructed = cc_location_panel_constructed;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/location/cc-location-panel.ui");
gtk_widget_class_bind_template_child (widget_class, CcLocationPanel, stack);
gtk_widget_class_bind_template_child (widget_class, CcLocationPanel, location_apps_list_box);
+ gtk_widget_class_bind_template_child (widget_class, CcLocationPanel, main_switch);
}
static void
@@ -427,6 +395,21 @@ cc_location_panel_init (CcLocationPanel *self)
self->location_icon_size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
self->location_settings = g_settings_new ("org.gnome.system.location");
+ g_settings_bind (self->location_settings,
+ LOCATION_ENABLED,
+ self->main_switch,
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+
+ g_object_bind_property_full (self->main_switch,
+ "active",
+ self->stack,
+ "visible-child-name",
+ G_BINDING_SYNC_CREATE,
+ to_child_name,
+ NULL,
+ NULL, NULL);
+
self->location_app_switches = g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
diff --git a/panels/location/cc-location-panel.ui b/panels/location/cc-location-panel.ui
index fdcd6101d..d2c48d494 100644
--- a/panels/location/cc-location-panel.ui
+++ b/panels/location/cc-location-panel.ui
@@ -1,6 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CcLocationPanel" parent="CcPanel">
+
+ <child type="titlebar-end">
+ <object class="GtkSwitch" id="main_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkStack" id="stack">
diff --git a/panels/microphone/cc-microphone-panel.c b/panels/microphone/cc-microphone-panel.c
index 3bf0e8be7..7583f993b 100644
--- a/panels/microphone/cc-microphone-panel.c
+++ b/panels/microphone/cc-microphone-panel.c
@@ -32,6 +32,7 @@ struct _CcMicrophonePanel
{
CcPanel parent_instance;
+ GtkSwitch *main_switch;
GtkListBox *microphone_apps_list_box;
GtkStack *stack;
@@ -366,34 +367,6 @@ cc_microphone_panel_get_help_uri (CcPanel *panel)
}
static void
-cc_microphone_panel_constructed (GObject *object)
-{
- CcMicrophonePanel *self = CC_MICROPHONE_PANEL (object);
- GtkWidget *box, *widget;
-
- G_OBJECT_CLASS (cc_microphone_panel_parent_class)->constructed (object);
-
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- widget = gtk_switch_new ();
- gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- gtk_box_append (GTK_BOX (box), widget);
-
- g_settings_bind (self->privacy_settings, "disable-microphone",
- widget, "active",
- G_SETTINGS_BIND_INVERT_BOOLEAN);
- g_object_bind_property_full (widget, "active",
- self->stack, "visible-child-name",
- G_BINDING_SYNC_CREATE,
- to_child_name,
- NULL,
- NULL, NULL);
-
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)),
- box,
- GTK_POS_RIGHT);
-}
-
-static void
cc_microphone_panel_class_init (CcMicrophonePanelClass *klass)
{
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
@@ -403,10 +376,10 @@ cc_microphone_panel_class_init (CcMicrophonePanelClass *klass)
panel_class->get_help_uri = cc_microphone_panel_get_help_uri;
object_class->finalize = cc_microphone_panel_finalize;
- object_class->constructed = cc_microphone_panel_constructed;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/microphone/cc-microphone-panel.ui");
+ gtk_widget_class_bind_template_child (widget_class, CcMicrophonePanel, main_switch);
gtk_widget_class_bind_template_child (widget_class, CcMicrophonePanel, stack);
gtk_widget_class_bind_template_child (widget_class, CcMicrophonePanel, microphone_apps_list_box);
}
@@ -422,6 +395,20 @@ cc_microphone_panel_init (CcMicrophonePanel *self)
self->privacy_settings = g_settings_new ("org.gnome.desktop.privacy");
+ g_settings_bind (self->privacy_settings,
+ "disable-microphone",
+ self->main_switch,
+ "active",
+ G_SETTINGS_BIND_INVERT_BOOLEAN);
+
+ g_object_bind_property_full (self->main_switch,
+ "active",
+ self->stack,
+ "visible-child-name",
+ G_BINDING_SYNC_CREATE,
+ to_child_name,
+ NULL,
+ NULL, NULL);
self->microphone_app_switches = g_hash_table_new_full (g_str_hash,
g_str_equal,
diff --git a/panels/microphone/cc-microphone-panel.ui b/panels/microphone/cc-microphone-panel.ui
index 3fa41fe42..67c01a56a 100644
--- a/panels/microphone/cc-microphone-panel.ui
+++ b/panels/microphone/cc-microphone-panel.ui
@@ -1,6 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CcMicrophonePanel" parent="CcPanel">
+
+ <child type="titlebar-end">
+ <object class="GtkSwitch" id="main_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkStack" id="stack">
diff --git a/panels/mouse/cc-mouse-panel.c b/panels/mouse/cc-mouse-panel.c
index 90b01bd5f..cdd28ab31 100644
--- a/panels/mouse/cc-mouse-panel.c
+++ b/panels/mouse/cc-mouse-panel.c
@@ -344,19 +344,6 @@ test_button_toggled_cb (CcMousePanel *self)
}
static void
-cc_mouse_panel_constructed (GObject *object)
-{
- CcMousePanel *self = CC_MOUSE_PANEL (object);
- CcShell *shell;
-
- G_OBJECT_CLASS (cc_mouse_panel_parent_class)->constructed (object);
-
- /* Add test area button to shell header. */
- shell = cc_panel_get_shell (CC_PANEL (self));
- cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->test_button), GTK_POS_RIGHT);
-}
-
-static void
cc_mouse_panel_init (CcMousePanel *self)
{
GsdDeviceManager *device_manager;
@@ -395,7 +382,6 @@ cc_mouse_panel_class_init (CcMousePanelClass *klass)
panel_class->get_help_uri = cc_mouse_panel_get_help_uri;
object_class->dispose = cc_mouse_panel_dispose;
- object_class->constructed = cc_mouse_panel_constructed;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/mouse/cc-mouse-panel.ui");
diff --git a/panels/mouse/cc-mouse-panel.ui b/panels/mouse/cc-mouse-panel.ui
index dc1f95d64..4954e1884 100644
--- a/panels/mouse/cc-mouse-panel.ui
+++ b/panels/mouse/cc-mouse-panel.ui
@@ -1,6 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CcMousePanel" parent="CcPanel">
+
+ <child type="titlebar-end">
+ <object class="GtkToggleButton" id="test_button">
+ <property name="use_underline">True</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Test Your _Settings</property>
+ <signal name="toggled" handler="test_button_toggled_cb" object="CcMousePanel" swapped="yes"/>
+ <style>
+ <class name="text-button"/>
+ </style>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkStack" id="stack">
<child>
@@ -164,15 +177,6 @@
</object>
</child>
</template>
- <object class="GtkToggleButton" id="test_button">
- <property name="use_underline">True</property>
- <property name="valign">center</property>
- <property name="label" translatable="yes">Test Your _Settings</property>
- <signal name="toggled" handler="test_button_toggled_cb" object="CcMousePanel" swapped="yes"/>
- <style>
- <class name="text-button"/>
- </style>
- </object>
<object class="GtkAdjustment" id="mouse_speed_adjustment">
<property name="lower">-1</property>
<property name="upper">1</property>
diff --git a/panels/network/cc-wifi-panel.c b/panels/network/cc-wifi-panel.c
index 1501803a8..146124f84 100644
--- a/panels/network/cc-wifi-panel.c
+++ b/panels/network/cc-wifi-panel.c
@@ -900,28 +900,6 @@ cc_wifi_panel_get_help_uri (CcPanel *panel)
return "help:gnome-help/net-wireless";
}
-static GtkWidget *
-cc_wifi_panel_get_title_widget (CcPanel *panel)
-{
- CcWifiPanel *self = CC_WIFI_PANEL (panel);
-
- return GTK_WIDGET (self->center_stack);
-}
-
-static void
-cc_wifi_panel_constructed (GObject *object)
-{
- CcWifiPanel *self;
- CcShell *shell;
-
- self = CC_WIFI_PANEL (object);
- shell = cc_panel_get_shell (CC_PANEL (object));
-
- G_OBJECT_CLASS (cc_wifi_panel_parent_class)->constructed (object);
-
- cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->header_stack), GTK_POS_RIGHT);
-}
-
static void
cc_wifi_panel_finalize (GObject *object)
{
@@ -1012,9 +990,7 @@ cc_wifi_panel_class_init (CcWifiPanelClass *klass)
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
panel_class->get_help_uri = cc_wifi_panel_get_help_uri;
- panel_class->get_title_widget = cc_wifi_panel_get_title_widget;
- object_class->constructed = cc_wifi_panel_constructed;
object_class->finalize = cc_wifi_panel_finalize;
object_class->get_property = cc_wifi_panel_get_property;
object_class->set_property = cc_wifi_panel_set_property;
diff --git a/panels/network/cc-wifi-panel.ui b/panels/network/cc-wifi-panel.ui
index 9722c5a07..1a1f44ff9 100644
--- a/panels/network/cc-wifi-panel.ui
+++ b/panels/network/cc-wifi-panel.ui
@@ -2,6 +2,45 @@
<interface>
<template class="CcWifiPanel" parent="CcPanel">
+ <child type="titlebar">
+ <object class="AdwHeaderBar" id="titlebar">
+ <property name="show-end-title-buttons">True</property>
+ <property name="show-start-title-buttons" bind-source="CcWifiPanel" bind-property="folded" bind-flags="default|sync-create" />
+ <child type="start">
+ <object class="GtkButton">
+ <property name="visible" bind-source="CcWifiPanel" bind-property="folded" bind-flags="default|sync-create" />
+ <property name="icon-name">go-previous-symbolic</property>
+ </object>
+ </child>
+
+ <!-- Center Widget -->
+ <property name="title-widget">
+ <object class="GtkStack" id="center_stack">
+ <property name="halign">center</property>
+ <property name="hhomogeneous">False</property>
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">many</property>
+ <property name="child">
+ <object class="GtkStackSwitcher">
+ <property name="stack">stack</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+
+ <!-- End Stack -->
+ <child type="end">
+ <object class="GtkStack" id="header_stack">
+ <property name="halign">end</property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
<child type="content">
<object class="GtkScrolledWindow">
<property name="hscrollbar-policy">never</property>
@@ -277,25 +316,4 @@
</object>
</child>
</template>
-
- <!-- End Stack -->
- <object class="GtkStack" id="header_stack">
- <property name="halign">end</property>
- </object>
-
- <!-- Center Widget -->
- <object class="GtkStack" id="center_stack">
- <property name="halign">center</property>
- <property name="hhomogeneous">False</property>
- <child>
- <object class="GtkStackPage">
- <property name="name">many</property>
- <property name="child">
- <object class="GtkStackSwitcher">
- <property name="stack">stack</property>
- </object>
- </property>
- </object>
- </child>
- </object>
</interface>
diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c
index 0ae9a5cdd..4337633f1 100644
--- a/panels/printers/cc-printers-panel.c
+++ b/panels/printers/cc-printers-panel.c
@@ -234,10 +234,6 @@ cc_printers_panel_constructed (GObject *object)
shell = cc_panel_get_shell (CC_PANEL (self));
widget = (GtkWidget*)
- gtk_builder_get_object (self->builder, "top-right-buttons");
- cc_shell_embed_widget_in_header (shell, widget, GTK_POS_RIGHT);
-
- widget = (GtkWidget*)
gtk_builder_get_object (self->builder, "search-bar");
gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (widget),
GTK_WIDGET (shell));
@@ -1318,4 +1314,9 @@ Please check your installation");
pp_cups_connection_test_async (self->cups, cc_panel_get_cancellable (CC_PANEL (self)), connection_test_cb, self);
cc_panel_set_content (CC_PANEL (self), top_widget);
+
+ widget = (GtkWidget*)
+ gtk_builder_get_object (self->builder, "top-right-buttons");
+ adw_header_bar_pack_end (ADW_HEADER_BAR (cc_panel_get_titlebar (CC_PANEL (self))),
+ widget);
}
diff --git a/panels/search/cc-search-panel.c b/panels/search/cc-search-panel.c
index 2de905734..5d000e9d6 100644
--- a/panels/search/cc-search-panel.c
+++ b/panels/search/cc-search-panel.c
@@ -28,15 +28,16 @@
struct _CcSearchPanel
{
- CcPanel parent_instance;
+ CcPanel parent_instance;
- GtkWidget *list_box;
- GtkWidget *search_vbox;
- GtkWidget *settings_button;
- CcSearchPanelRow *selected_row;
+ GtkWidget *list_box;
+ GtkSwitch *main_switch;
+ GtkWidget *search_vbox;
+ GtkWidget *settings_button;
+ CcSearchPanelRow *selected_row;
- GSettings *search_settings;
- GHashTable *sort_order;
+ GSettings *search_settings;
+ GHashTable *sort_order;
CcSearchLocationsDialog *locations_dialog;
};
@@ -620,35 +621,6 @@ cc_search_panel_finalize (GObject *object)
}
static void
-cc_search_panel_constructed (GObject *object)
-{
- CcSearchPanel *self = CC_SEARCH_PANEL (object);
- GtkWidget *box, *widget;
-
- G_OBJECT_CLASS (cc_search_panel_parent_class)->constructed (object);
-
- /* add the disable all switch */
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-
- widget = gtk_switch_new ();
- gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- gtk_box_append (GTK_BOX (box), widget);
-
- g_settings_bind (self->search_settings, "disable-external",
- widget, "active",
- G_SETTINGS_BIND_DEFAULT |
- G_SETTINGS_BIND_INVERT_BOOLEAN);
-
- g_object_bind_property (widget, "active",
- self->search_vbox, "sensitive",
- G_BINDING_DEFAULT |
- G_BINDING_SYNC_CREATE);
-
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), self->settings_button, GTK_POS_LEFT);
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), box, GTK_POS_RIGHT);
-}
-
-static void
cc_search_panel_init (CcSearchPanel *self)
{
g_resources_register (cc_search_get_resource ());
@@ -661,6 +633,20 @@ cc_search_panel_init (CcSearchPanel *self)
gtk_widget_set_sensitive (self->settings_button, cc_search_locations_dialog_is_available ());
self->search_settings = g_settings_new ("org.gnome.desktop.search-providers");
+ g_settings_bind (self->search_settings,
+ "disable-external",
+ self->main_switch,
+ "active",
+ G_SETTINGS_BIND_DEFAULT |
+ G_SETTINGS_BIND_INVERT_BOOLEAN);
+
+ g_object_bind_property (self->main_switch,
+ "active",
+ self->search_vbox,
+ "sensitive",
+ G_BINDING_DEFAULT |
+ G_BINDING_SYNC_CREATE);
+
self->sort_order = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, NULL);
g_signal_connect_swapped (self->search_settings, "changed::sort-order",
@@ -676,13 +662,13 @@ cc_search_panel_class_init (CcSearchPanelClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *oclass = G_OBJECT_CLASS (klass);
- oclass->constructed = cc_search_panel_constructed;
oclass->finalize = cc_search_panel_finalize;
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/control-center/search/cc-search-panel.ui");
gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, list_box);
+ gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, main_switch);
gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, search_vbox);
gtk_widget_class_bind_template_child (widget_class, CcSearchPanel, settings_button);
diff --git a/panels/search/cc-search-panel.ui b/panels/search/cc-search-panel.ui
index df07154c3..46488bf87 100644
--- a/panels/search/cc-search-panel.ui
+++ b/panels/search/cc-search-panel.ui
@@ -3,6 +3,21 @@
<template class="CcSearchPanel" parent="CcPanel">
<property name="visible">True</property>
+ <!-- Header widget -->
+ <child type="titlebar-start">
+ <object class="GtkButton" id="settings_button">
+ <property name="label" translatable="yes">Search Locations</property>
+ <signal name="clicked" handler="settings_button_clicked" object="CcSearchPanel" swapped="no"/>
+ </object>
+ </child>
+
+ <!-- Header widget -->
+ <child type="titlebar-end">
+ <object class="GtkSwitch" id="main_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkScrolledWindow" id="search_vbox">
<property name="visible">True</property>
@@ -47,10 +62,4 @@
</child>
</template>
- <!-- Header widget -->
- <object class="GtkButton" id="settings_button">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Search Locations</property>
- <signal name="clicked" handler="settings_button_clicked" object="CcSearchPanel" swapped="no"/>
- </object>
</interface>
diff --git a/panels/sharing/cc-sharing-panel.c b/panels/sharing/cc-sharing-panel.c
index 274ba754f..fb48c8b29 100644
--- a/panels/sharing/cc-sharing-panel.c
+++ b/panels/sharing/cc-sharing-panel.c
@@ -121,19 +121,6 @@ cc_sharing_panel_master_switch_notify (CcSharingPanel *self)
}
static void
-cc_sharing_panel_constructed (GObject *object)
-{
- CcSharingPanel *self = CC_SHARING_PANEL (object);
-
- G_OBJECT_CLASS (cc_sharing_panel_parent_class)->constructed (object);
-
- /* add the master switch */
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (object)),
- gtk_widget_get_parent (self->master_switch),
- GTK_POS_RIGHT);
-}
-
-static void
cc_sharing_panel_dispose (GObject *object)
{
CcSharingPanel *self = CC_SHARING_PANEL (object);
@@ -184,7 +171,6 @@ cc_sharing_panel_class_init (CcSharingPanelClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
- object_class->constructed = cc_sharing_panel_constructed;
object_class->dispose = cc_sharing_panel_dispose;
panel_class->get_help_uri = cc_sharing_panel_get_help_uri;
@@ -195,6 +181,7 @@ cc_sharing_panel_class_init (CcSharingPanelClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, hostname_entry);
gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_grid);
gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, shared_folders_grid);
+ gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, master_switch);
gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, main_list_box);
gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, media_sharing_dialog);
gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, media_sharing_headerbar);
@@ -1122,8 +1109,6 @@ sharing_proxy_ready (GObject *source,
static void
cc_sharing_panel_init (CcSharingPanel *self)
{
- GtkWidget *box;
-
g_resources_register (cc_sharing_get_resource ());
gtk_widget_init_template (GTK_WIDGET (self));
@@ -1143,16 +1128,6 @@ cc_sharing_panel_init (CcSharingPanel *self)
gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (self->main_list_box),
TRUE);
- /* create the master switch */
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-
- self->master_switch = gtk_switch_new ();
- gtk_widget_set_valign (self->master_switch, GTK_ALIGN_CENTER);
- gtk_accessible_update_property (GTK_ACCESSIBLE (self->master_switch),
- GTK_ACCESSIBLE_PROPERTY_LABEL, _("Sharing"),
- -1);
- gtk_box_append (GTK_BOX (box), self->master_switch);
-
/* start the panel in the disabled state */
gtk_switch_set_active (GTK_SWITCH (self->master_switch), FALSE);
gtk_widget_set_sensitive (self->main_list_box, FALSE);
diff --git a/panels/sharing/cc-sharing-panel.ui b/panels/sharing/cc-sharing-panel.ui
index a8a957fc0..57bac425f 100644
--- a/panels/sharing/cc-sharing-panel.ui
+++ b/panels/sharing/cc-sharing-panel.ui
@@ -1,6 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="CcSharingPanel" parent="CcPanel">
+
+ <child type="titlebar-end">
+ <object class="GtkSwitch" id="master_switch">
+ <property name="valign">center</property>
+ <accessibility>
+ <property name="label" translatable="yes">Sharing</property>
+ </accessibility>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkScrolledWindow" id="sharing_panel">
<property name="hscrollbar-policy">never</property>
diff --git a/panels/thunderbolt/cc-bolt-panel.c b/panels/thunderbolt/cc-bolt-panel.c
index 6585a933e..0ec005b68 100644
--- a/panels/thunderbolt/cc-bolt-panel.c
+++ b/panels/thunderbolt/cc-bolt-panel.c
@@ -889,13 +889,11 @@ cc_bolt_panel_constructed (GObject *object)
GtkWindow *parent;
CcShell *shell;
- parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel))));
- gtk_window_set_transient_for (GTK_WINDOW (panel->device_dialog), parent);
-
G_OBJECT_CLASS (cc_bolt_panel_parent_class)->constructed (object);
shell = cc_panel_get_shell (CC_PANEL (panel));
- cc_shell_embed_widget_in_header (shell, GTK_WIDGET (panel->headerbar_box), GTK_POS_RIGHT);
+ parent = GTK_WINDOW (cc_shell_get_toplevel (shell));
+ gtk_window_set_transient_for (GTK_WINDOW (panel->device_dialog), parent);
}
static void
diff --git a/panels/thunderbolt/cc-bolt-panel.ui b/panels/thunderbolt/cc-bolt-panel.ui
index 9bb41156b..a0aee01f0 100644
--- a/panels/thunderbolt/cc-bolt-panel.ui
+++ b/panels/thunderbolt/cc-bolt-panel.ui
@@ -2,6 +2,19 @@
<interface>
<template class="CcBoltPanel" parent="CcPanel">
+ <!-- Headerbar entries -->
+ <child type="titlebar-end">
+ <object class="GtkBox" id="headerbar_box">
+ <property name="visible">False</property>
+ <property name="spacing">6</property>
+ <property name="halign">end</property>
+ <child>
+ <object class="GtkLockButton" id="lock_button">
+ </object>
+ </child>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkOverlay">
<child type="overlay">
@@ -498,15 +511,4 @@
</child>
</template>
- <!-- Headerbar entries -->
- <object class="GtkBox" id="headerbar_box">
- <property name="visible">False</property>
- <property name="spacing">6</property>
- <property name="halign">end</property>
- <child>
- <object class="GtkLockButton" id="lock_button">
- </object>
- </child>
- </object>
-
</interface>
diff --git a/panels/wacom/cc-wacom-panel.c b/panels/wacom/cc-wacom-panel.c
index 22192244a..f75e4baf8 100644
--- a/panels/wacom/cc-wacom-panel.c
+++ b/panels/wacom/cc-wacom-panel.c
@@ -478,7 +478,6 @@ static void
cc_wacom_panel_constructed (GObject *object)
{
CcWacomPanel *self = CC_WACOM_PANEL (object);
- GtkWidget *button;
CcShell *shell;
G_OBJECT_CLASS (cc_wacom_panel_parent_class)->constructed (object);
@@ -486,22 +485,6 @@ cc_wacom_panel_constructed (GObject *object)
/* Add test area button to shell header. */
shell = cc_panel_get_shell (CC_PANEL (self));
- button = gtk_menu_button_new ();
- gtk_menu_button_set_use_underline (GTK_MENU_BUTTON (button), TRUE);
- gtk_menu_button_set_label (GTK_MENU_BUTTON (button), _("Test Your _Settings"));
- gtk_widget_add_css_class (button, "text-button");
- gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
-
- cc_shell_embed_widget_in_header (shell, button, GTK_POS_RIGHT);
-
- self->test_popover = gtk_popover_new ();
- gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), self->test_popover);
-
- self->test_draw_area = cc_drawing_area_new ();
- gtk_widget_set_size_request (self->test_draw_area, 400, 300);
- gtk_popover_set_child (GTK_POPOVER (self->test_popover), self->test_draw_area);
- gtk_widget_show (self->test_draw_area);
-
self->stylus_gesture = gtk_gesture_stylus_new ();
g_signal_connect (self->stylus_gesture, "proximity",
G_CALLBACK (on_stylus_proximity_cb), self);
@@ -510,9 +493,6 @@ cc_wacom_panel_constructed (GObject *object)
if (g_getenv ("UMOCKDEV_DIR") != NULL)
self->mock_stylus_id = g_idle_add (show_mock_stylus_cb, self);
-
- self->test_button = button;
- update_test_button (self);
}
static const char *
@@ -521,14 +501,6 @@ cc_wacom_panel_get_help_uri (CcPanel *panel)
return "help:gnome-help/wacom";
}
-static GtkWidget *
-cc_wacom_panel_get_title_widget (CcPanel *panel)
-{
- CcWacomPanel *self = CC_WACOM_PANEL (panel);
-
- return self->switcher;
-}
-
static void
cc_wacom_panel_class_init (CcWacomPanelClass *klass)
{
@@ -541,7 +513,6 @@ cc_wacom_panel_class_init (CcWacomPanelClass *klass)
object_class->constructed = cc_wacom_panel_constructed;
panel_class->get_help_uri = cc_wacom_panel_get_help_uri;
- panel_class->get_title_widget = cc_wacom_panel_get_title_widget;
g_object_class_override_property (object_class, PROP_PARAMETERS, "parameters");
}
@@ -695,6 +666,8 @@ on_stack_visible_child_notify_cb (CcWacomPanel *panel)
static void
cc_wacom_panel_init (CcWacomPanel *self)
{
+ GtkWidget *titlebar;
+ GtkWidget *button;
GtkWidget *widget;
GsdDeviceManager *device_manager;
g_autoptr(GList) devices = NULL;
@@ -800,6 +773,27 @@ cc_wacom_panel_init (CcWacomPanel *self)
add_known_device (self, l->data);
update_current_page (self);
+
+ /* Titlebar widgets */
+ button = gtk_menu_button_new ();
+ gtk_menu_button_set_use_underline (GTK_MENU_BUTTON (button), TRUE);
+ gtk_menu_button_set_label (GTK_MENU_BUTTON (button), _("Test Your _Settings"));
+ gtk_widget_add_css_class (button, "text-button");
+ gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
+
+ self->test_popover = gtk_popover_new ();
+ gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), self->test_popover);
+
+ self->test_draw_area = cc_drawing_area_new ();
+ gtk_widget_set_size_request (self->test_draw_area, 400, 300);
+ gtk_popover_set_child (GTK_POPOVER (self->test_popover), self->test_draw_area);
+
+ self->test_button = button;
+ update_test_button (self);
+
+ titlebar = cc_panel_get_titlebar (CC_PANEL (self));
+ adw_header_bar_set_title_widget (ADW_HEADER_BAR (titlebar), self->switcher);
+ adw_header_bar_pack_end (ADW_HEADER_BAR (titlebar), button);
}
GDBusProxy *
diff --git a/panels/wwan/cc-wwan-panel.c b/panels/wwan/cc-wwan-panel.c
index 1070a9e52..63f519d74 100644
--- a/panels/wwan/cc-wwan-panel.c
+++ b/panels/wwan/cc-wwan-panel.c
@@ -682,24 +682,6 @@ cc_wwan_panel_set_property (GObject *object,
}
static void
-cc_wwan_panel_constructed (GObject *object)
-{
- CcWwanPanel *self = (CcWwanPanel *)object;
-
- G_OBJECT_CLASS (cc_wwan_panel_parent_class)->constructed (object);
-
- cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)),
- GTK_WIDGET (self->enable_switch), GTK_POS_RIGHT);
-
- if (self->nm_client)
- {
- g_object_bind_property (self->nm_client, "wwan-enabled",
- self->enable_switch, "active",
- G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
- }
-}
-
-static void
cc_wwan_panel_dispose (GObject *object)
{
CcWwanPanel *self = (CcWwanPanel *)object;
@@ -730,7 +712,6 @@ cc_wwan_panel_class_init (CcWwanPanelClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->set_property = cc_wwan_panel_set_property;
- object_class->constructed = cc_wwan_panel_constructed;
object_class->dispose = cc_wwan_panel_dispose;
g_object_class_override_property (object_class, PROP_PARAMETERS, "parameters");
@@ -788,6 +769,13 @@ cc_wwan_panel_init (CcWwanPanel *self)
g_warn_if_reached ();
}
+ if (self->nm_client)
+ {
+ g_object_bind_property (self->nm_client, "wwan-enabled",
+ self->enable_switch, "active",
+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
+ }
+
if (cc_object_storage_has_object ("CcObjectStorage::mm-manager"))
{
self->mm_manager = cc_object_storage_get_object ("CcObjectStorage::mm-manager");
diff --git a/panels/wwan/cc-wwan-panel.ui b/panels/wwan/cc-wwan-panel.ui
index eb4cba107..cfb5229bc 100644
--- a/panels/wwan/cc-wwan-panel.ui
+++ b/panels/wwan/cc-wwan-panel.ui
@@ -3,6 +3,15 @@
<requires lib="gtk" version="4.0"/>
<template class="CcWwanPanel" parent="CcPanel">
+ <!-- Cellular panel on/off switch -->
+ <child type="titlebar-end">
+ <object class="GtkSwitch" id="enable_switch">
+ <accessibility>
+ <property name="label" translatable="yes">Enable Mobile Network</property>
+ </accessibility>
+ </object>
+ </child>
+
<child type="content">
<object class="GtkOverlay">
@@ -220,11 +229,4 @@
</child>
</template>
-
- <!-- Cellular panel on/off switch -->
- <object class="GtkSwitch" id="enable_switch">
- <accessibility>
- <property name="label" translatable="yes">Enable Mobile Network</property>
- </accessibility>
- </object>
</interface>