summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2022-01-19 19:39:04 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2022-01-20 02:23:42 +0000
commit82c87578cd4a484fc2d2dfe824c08af9f6a6f046 (patch)
treef14231e2412df896bfe86c89f7b311f648e4b076
parent4209c510da67ebdac1fcab2fb0f6723fe127cef8 (diff)
downloadgnome-control-center-82c87578cd4a484fc2d2dfe824c08af9f6a6f046.tar.gz
window: Install action to navigate main leaflet
This allows implementing the back button of panel titlebars trivially, which is also done in this commit.
-rw-r--r--panels/applications/cc-applications-panel.ui2
-rw-r--r--panels/display/cc-display-panel.ui2
-rw-r--r--panels/network/cc-wifi-panel.ui2
-rw-r--r--shell/cc-panel.ui2
-rw-r--r--shell/cc-window.c13
5 files changed, 21 insertions, 0 deletions
diff --git a/panels/applications/cc-applications-panel.ui b/panels/applications/cc-applications-panel.ui
index 98ea10fdd..4c7e7979c 100644
--- a/panels/applications/cc-applications-panel.ui
+++ b/panels/applications/cc-applications-panel.ui
@@ -10,6 +10,8 @@
<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>
+ <property name="action-name">window.navigate</property>
+ <property name="action-target">0</property> <!-- 0: ADW_NAVIGATION_DIRECTION_BACK -->
</object>
</child>
<property name="title-widget">
diff --git a/panels/display/cc-display-panel.ui b/panels/display/cc-display-panel.ui
index 4de2fb2fb..30c062b45 100644
--- a/panels/display/cc-display-panel.ui
+++ b/panels/display/cc-display-panel.ui
@@ -72,6 +72,8 @@
<object class="GtkButton">
<property name="visible" bind-source="CcDisplayPanel" bind-property="folded" bind-flags="default|sync-create" />
<property name="icon-name">go-previous-symbolic</property>
+ <property name="action-name">window.navigate</property>
+ <property name="action-target">0</property> <!-- 0: ADW_NAVIGATION_DIRECTION_BACK -->
</object>
</child>
<property name="title-widget">
diff --git a/panels/network/cc-wifi-panel.ui b/panels/network/cc-wifi-panel.ui
index 1a1f44ff9..570c3355f 100644
--- a/panels/network/cc-wifi-panel.ui
+++ b/panels/network/cc-wifi-panel.ui
@@ -10,6 +10,8 @@
<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>
+ <property name="action-name">window.navigate</property>
+ <property name="action-target">0</property> <!-- 0: ADW_NAVIGATION_DIRECTION_BACK -->
</object>
</child>
diff --git a/shell/cc-panel.ui b/shell/cc-panel.ui
index 4e0f9c5fe..e7798bb63 100644
--- a/shell/cc-panel.ui
+++ b/shell/cc-panel.ui
@@ -18,6 +18,8 @@
<object class="GtkButton">
<property name="visible" bind-source="CcPanel" bind-property="folded" bind-flags="default|sync-create" />
<property name="icon-name">go-previous-symbolic</property>
+ <property name="action-name">window.navigate</property>
+ <property name="action-target">0</property> <!-- 0: ADW_NAVIGATION_DIRECTION_BACK -->
</object>
</child>
<property name="title-widget">
diff --git a/shell/cc-window.c b/shell/cc-window.c
index 589f5a45a..633139e5f 100644
--- a/shell/cc-window.c
+++ b/shell/cc-window.c
@@ -480,6 +480,17 @@ switch_to_previous_panel (CcWindow *self)
}
/* Callbacks */
+
+static void
+navigate_action_cb (GtkWidget *widget,
+ const gchar *action_name,
+ GVariant *parameter)
+{
+ CcWindow *self = CC_WINDOW (widget);
+
+ adw_leaflet_navigate (self->main_leaflet, g_variant_get_int32 (parameter));
+}
+
static void
on_main_leaflet_folded_changed_cb (CcWindow *self)
{
@@ -811,6 +822,8 @@ cc_window_class_init (CcWindowClass *klass)
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_w, GDK_CONTROL_MASK, "window.close", NULL);
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_W, GDK_CONTROL_MASK, "window.close", NULL);
+ gtk_widget_class_install_action (widget_class, "window.navigate", "i", navigate_action_cb);
+
g_type_ensure (CC_TYPE_PANEL_LIST);
}