summaryrefslogtreecommitdiff
path: root/shell
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 /shell
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.
Diffstat (limited to 'shell')
-rw-r--r--shell/cc-panel.ui2
-rw-r--r--shell/cc-window.c13
2 files changed, 15 insertions, 0 deletions
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);
}