From 1a4730034bb688faf66463abef65d715de896e9c Mon Sep 17 00:00:00 2001 From: Automeris naranja <104251-automerisnaranja@users.noreply.gitlab.gnome.org> Date: Fri, 8 Nov 2024 12:53:54 -0300 Subject: [PATCH 1/2] keyboard: Turn CcKeyboardShortcutDialog into a subpage Doing so, the navigation in Settings will be more consistent. See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/3020 --- panels/keyboard/cc-keyboard-panel.c | 12 +- ...t-dialog.c => cc-keyboard-shortcut-page.c} | 124 +++++++++--------- ...t-dialog.h => cc-keyboard-shortcut-page.h} | 8 +- ...dialog.ui => cc-keyboard-shortcut-page.ui} | 19 +-- panels/keyboard/keyboard.gresource.xml | 2 +- panels/keyboard/meson.build | 2 +- po/POTFILES.in | 4 +- 7 files changed, 80 insertions(+), 91 deletions(-) rename panels/keyboard/{cc-keyboard-shortcut-dialog.c => cc-keyboard-shortcut-page.c} (83%) rename panels/keyboard/{cc-keyboard-shortcut-dialog.h => cc-keyboard-shortcut-page.h} (75%) rename panels/keyboard/{cc-keyboard-shortcut-dialog.ui => cc-keyboard-shortcut-page.ui} (92%) diff --git a/panels/keyboard/cc-keyboard-panel.c b/panels/keyboard/cc-keyboard-panel.c index 51d6f33f8e..ccc3035a34 100644 --- a/panels/keyboard/cc-keyboard-panel.c +++ b/panels/keyboard/cc-keyboard-panel.c @@ -28,7 +28,7 @@ #include "cc-keyboard-panel.h" #include "cc-keyboard-resources.h" -#include "cc-keyboard-shortcut-dialog.h" +#include "cc-keyboard-shortcut-page.h" #include "cc-input-list-box.h" #include "cc-xkb-modifier-page.h" #include "cc-list-row.h" @@ -121,14 +121,10 @@ compose_row_activated (CcKeyboardPanel *self) static void keyboard_shortcuts_activated (CcKeyboardPanel *self) { - GtkWindow *window; - GtkWidget *shortcut_dialog; - - window = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (self)))); + AdwNavigationPage *page; - shortcut_dialog = cc_keyboard_shortcut_dialog_new (); - gtk_window_set_transient_for (GTK_WINDOW (shortcut_dialog), window); - gtk_window_present (GTK_WINDOW (shortcut_dialog)); + page = ADW_NAVIGATION_PAGE (cc_keyboard_shortcut_page_new ()); + cc_panel_push_subpage (CC_PANEL (self), page); } static void diff --git a/panels/keyboard/cc-keyboard-shortcut-dialog.c b/panels/keyboard/cc-keyboard-shortcut-page.c similarity index 83% rename from panels/keyboard/cc-keyboard-shortcut-dialog.c rename to panels/keyboard/cc-keyboard-shortcut-page.c index 0e69068876..165ca4c2ab 100644 --- a/panels/keyboard/cc-keyboard-shortcut-dialog.c +++ b/panels/keyboard/cc-keyboard-shortcut-page.c @@ -1,4 +1,4 @@ -/* cc-keyboard-shortcut-dialog.c +/* cc-keyboard-shortcut-page.c * * Copyright (C) 2010 Intel, Inc * Copyright (C) 2016 Endless, Inc @@ -30,7 +30,7 @@ #include #include -#include "cc-keyboard-shortcut-dialog.h" +#include "cc-keyboard-shortcut-page.h" #include "cc-keyboard-item.h" #include "cc-keyboard-manager.h" #include "cc-keyboard-shortcut-editor.h" @@ -40,9 +40,9 @@ #include "cc-util.h" #include "keyboard-shortcuts.h" -struct _CcKeyboardShortcutDialog +struct _CcKeyboardShortcutPage { - AdwWindow parent_instance; + AdwNavigationPage parent_instance; AdwNavigationView *navigation_view; AdwNavigationPage *main_page; @@ -70,20 +70,20 @@ struct _CcKeyboardShortcutDialog GStrv search_terms; }; -G_DEFINE_TYPE (CcKeyboardShortcutDialog, cc_keyboard_shortcut_dialog, ADW_TYPE_WINDOW) +G_DEFINE_TYPE (CcKeyboardShortcutPage, cc_keyboard_shortcut_page, ADW_TYPE_NAVIGATION_PAGE) static GListStore * -keyboard_shortcut_get_section_store (CcKeyboardShortcutDialog *self, - const char *section_id, - const char *section_title) +keyboard_shortcut_get_section_store (CcKeyboardShortcutPage *self, + const char *section_id, + const char *section_title) { g_autoptr(GListStore) section = NULL; CcKeyboardShortcutEditor *shortcut_editor; GtkWidget *group; guint n_items; - g_assert (CC_IS_KEYBOARD_SHORTCUT_DIALOG (self)); + g_assert (CC_IS_KEYBOARD_SHORTCUT_PAGE (self)); g_assert (section_id && *section_id); n_items = g_list_model_get_n_items (G_LIST_MODEL (self->sections)); @@ -129,10 +129,10 @@ keyboard_shortcut_get_section_store (CcKeyboardShortcutDialog *self, } static void -shortcut_added_cb (CcKeyboardShortcutDialog *self, - CcKeyboardItem *item, - const char *section_id, - const char *section_title) +shortcut_added_cb (CcKeyboardShortcutPage *self, + CcKeyboardItem *item, + const char *section_id, + const char *section_title) { GListStore *section; @@ -142,8 +142,8 @@ shortcut_added_cb (CcKeyboardShortcutDialog *self, } static void -shortcut_removed_cb (CcKeyboardShortcutDialog *self, - CcKeyboardItem *item) +shortcut_removed_cb (CcKeyboardShortcutPage *self, + CcKeyboardItem *item) { GListStore *section; guint position; @@ -156,12 +156,12 @@ shortcut_removed_cb (CcKeyboardShortcutDialog *self, } static void -shortcut_custom_items_changed (CcKeyboardShortcutDialog *self) +shortcut_custom_items_changed (CcKeyboardShortcutPage *self) { GListStore *section; GtkWidget *page; - g_assert (CC_IS_KEYBOARD_SHORTCUT_DIALOG (self)); + g_assert (CC_IS_KEYBOARD_SHORTCUT_PAGE (self)); section = keyboard_shortcut_get_section_store (self, "custom", "Custom Shortcuts"); @@ -211,13 +211,13 @@ compare_sections_title (gconstpointer a, } static void -shortcut_search_result_changed_cb (CcKeyboardShortcutDialog *self) +shortcut_search_result_changed_cb (CcKeyboardShortcutPage *self) { GListModel *model; GtkWidget *page; guint n_items; - g_assert (CC_IS_KEYBOARD_SHORTCUT_DIALOG (self)); + g_assert (CC_IS_KEYBOARD_SHORTCUT_PAGE (self)); /* If a section is already shown, it is handled in search change callback */ if (self->visible_section) @@ -238,7 +238,7 @@ shortcut_search_result_changed_cb (CcKeyboardShortcutDialog *self) /* All items have loaded, now sort the groups and add them to the page */ static void -shortcuts_loaded_cb (CcKeyboardShortcutDialog *self) +shortcuts_loaded_cb (CcKeyboardShortcutPage *self) { g_autoptr(GPtrArray) filtered_items = NULL; g_autoptr(GPtrArray) widgets = NULL; @@ -295,8 +295,8 @@ shortcuts_loaded_cb (CcKeyboardShortcutDialog *self) } static GtkWidget * -shortcut_dialog_row_new (gpointer item, - gpointer user_data) +shortcut_page_row_new (gpointer item, + gpointer user_data) { GtkWidget *row, *group; const char *title; @@ -318,7 +318,7 @@ shortcut_dialog_row_new (gpointer item, } static void -add_custom_shortcut_clicked_cb (CcKeyboardShortcutDialog *self) +add_custom_shortcut_clicked_cb (CcKeyboardShortcutPage *self) { CcKeyboardShortcutEditor *shortcut_editor; @@ -331,7 +331,7 @@ add_custom_shortcut_clicked_cb (CcKeyboardShortcutDialog *self) } static void -on_reset_all_dialog_response_cb (CcKeyboardShortcutDialog *self) +on_reset_all_dialog_response_cb (CcKeyboardShortcutPage *self) { guint n_items, j_items; @@ -362,7 +362,7 @@ on_reset_all_dialog_response_cb (CcKeyboardShortcutDialog *self) } static void -shortcut_dialog_visible_page_changed_cb (CcKeyboardShortcutDialog *self) +shortcut_page_visible_page_changed_cb (CcKeyboardShortcutPage *self) { gpointer visible_page; gboolean is_main_view; @@ -387,13 +387,13 @@ shortcut_dialog_visible_page_changed_cb (CcKeyboardShortcutDialog *self) } static void -shortcut_search_entry_changed_cb (CcKeyboardShortcutDialog *self) +shortcut_search_entry_changed_cb (CcKeyboardShortcutPage *self) { g_autofree char *search = NULL; const char *search_text; guint n_items; - g_assert (CC_IS_KEYBOARD_SHORTCUT_DIALOG (self)); + g_assert (CC_IS_KEYBOARD_SHORTCUT_PAGE (self)); /* Don't update search if we are in a subview */ if (self->visible_section) @@ -425,7 +425,7 @@ shortcut_search_entry_changed_cb (CcKeyboardShortcutDialog *self) } static void -shortcut_search_entry_stopped_cb (CcKeyboardShortcutDialog *self) +shortcut_search_entry_stopped_cb (CcKeyboardShortcutPage *self) { const char *search_text; search_text = gtk_editable_get_text (GTK_EDITABLE (self->search_entry)); @@ -437,13 +437,13 @@ shortcut_search_entry_stopped_cb (CcKeyboardShortcutDialog *self) } static void -shortcut_section_row_activated_cb (CcKeyboardShortcutDialog *self, - GtkListBoxRow *row) +shortcut_section_row_activated_cb (CcKeyboardShortcutPage *self, + GtkListBoxRow *row) { GListStore *section; GtkWidget *page; - g_assert (CC_IS_KEYBOARD_SHORTCUT_DIALOG (self)); + g_assert (CC_IS_KEYBOARD_SHORTCUT_PAGE (self)); g_assert (GTK_IS_LIST_BOX_ROW (row)); section = g_object_get_data (G_OBJECT (row), "section"); @@ -456,9 +456,9 @@ shortcut_section_row_activated_cb (CcKeyboardShortcutDialog *self, } static void -cc_keyboard_shortcut_dialog_finalize (GObject *object) +cc_keyboard_shortcut_page_finalize (GObject *object) { - CcKeyboardShortcutDialog *self = CC_KEYBOARD_SHORTCUT_DIALOG (object); + CcKeyboardShortcutPage *self = CC_KEYBOARD_SHORTCUT_PAGE (object); g_clear_object (&self->manager); g_clear_object (&self->sections); @@ -466,57 +466,55 @@ cc_keyboard_shortcut_dialog_finalize (GObject *object) g_clear_object (&self->sections); g_clear_object (&self->filtered_shortcuts); - G_OBJECT_CLASS (cc_keyboard_shortcut_dialog_parent_class)->finalize (object); + G_OBJECT_CLASS (cc_keyboard_shortcut_page_parent_class)->finalize (object); } static void -cc_keyboard_shortcut_dialog_class_init (CcKeyboardShortcutDialogClass *klass) +cc_keyboard_shortcut_page_class_init (CcKeyboardShortcutPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - object_class->finalize = cc_keyboard_shortcut_dialog_finalize; - - gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Escape, 0, "window.close", NULL); + object_class->finalize = cc_keyboard_shortcut_page_finalize; gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/" - "keyboard/cc-keyboard-shortcut-dialog.ui"); - - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, navigation_view); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, main_page); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, reset_all_button_row); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, reset_all_dialog); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, search_entry); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, section_stack); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, section_list_page); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, section_list_box); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, search_result_page); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, empty_results_page); - - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, subview_page); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, subview_stack); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, shortcut_list_stack); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, empty_custom_shortcut_page); - gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutDialog, accelerator_size_group); + "keyboard/cc-keyboard-shortcut-page.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, navigation_view); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, main_page); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, reset_all_button_row); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, reset_all_dialog); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, search_entry); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, section_stack); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, section_list_page); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, section_list_box); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, search_result_page); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, empty_results_page); + + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, subview_page); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, subview_stack); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, shortcut_list_stack); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, empty_custom_shortcut_page); + gtk_widget_class_bind_template_child (widget_class, CcKeyboardShortcutPage, accelerator_size_group); gtk_widget_class_bind_template_callback (widget_class, add_custom_shortcut_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_reset_all_dialog_response_cb); - gtk_widget_class_bind_template_callback (widget_class, shortcut_dialog_visible_page_changed_cb); + gtk_widget_class_bind_template_callback (widget_class, shortcut_page_visible_page_changed_cb); gtk_widget_class_bind_template_callback (widget_class, shortcut_search_entry_changed_cb); gtk_widget_class_bind_template_callback (widget_class, shortcut_search_entry_stopped_cb); gtk_widget_class_bind_template_callback (widget_class, shortcut_section_row_activated_cb); } static void -cc_keyboard_shortcut_dialog_init (CcKeyboardShortcutDialog *self) +cc_keyboard_shortcut_page_init (CcKeyboardShortcutPage *self) { gtk_widget_init_template (GTK_WIDGET (self)); - shortcut_dialog_visible_page_changed_cb (self); + shortcut_page_visible_page_changed_cb (self); self->manager = cc_keyboard_manager_new (); - shortcut_dialog_visible_page_changed_cb (self); + shortcut_page_visible_page_changed_cb (self); self->sections = g_list_store_new (G_TYPE_LIST_STORE); @@ -537,12 +535,12 @@ cc_keyboard_shortcut_dialog_init (CcKeyboardShortcutDialog *self) gtk_list_box_bind_model (self->section_list_box, G_LIST_MODEL (self->sections), - shortcut_dialog_row_new, + shortcut_page_row_new, self, NULL); } GtkWidget* -cc_keyboard_shortcut_dialog_new (void) +cc_keyboard_shortcut_page_new (void) { - return g_object_new (CC_TYPE_KEYBOARD_SHORTCUT_DIALOG, NULL); + return g_object_new (CC_TYPE_KEYBOARD_SHORTCUT_PAGE, NULL); } diff --git a/panels/keyboard/cc-keyboard-shortcut-dialog.h b/panels/keyboard/cc-keyboard-shortcut-page.h similarity index 75% rename from panels/keyboard/cc-keyboard-shortcut-dialog.h rename to panels/keyboard/cc-keyboard-shortcut-page.h index 30a6e4c5d7..ceb58b9100 100644 --- a/panels/keyboard/cc-keyboard-shortcut-dialog.h +++ b/panels/keyboard/cc-keyboard-shortcut-page.h @@ -1,4 +1,4 @@ -/* cc-keyboard-shortcut-dialog.h +/* cc-keyboard-shortcut-page.h * * Copyright (C) 2020 System76, Inc. * @@ -26,9 +26,9 @@ G_BEGIN_DECLS -#define CC_TYPE_KEYBOARD_SHORTCUT_DIALOG (cc_keyboard_shortcut_dialog_get_type ()) -G_DECLARE_FINAL_TYPE (CcKeyboardShortcutDialog, cc_keyboard_shortcut_dialog, CC, KEYBOARD_SHORTCUT_DIALOG, AdwWindow) +#define CC_TYPE_KEYBOARD_SHORTCUT_PAGE (cc_keyboard_shortcut_page_get_type ()) +G_DECLARE_FINAL_TYPE (CcKeyboardShortcutPage, cc_keyboard_shortcut_page, CC, KEYBOARD_SHORTCUT_PAGE, AdwNavigationPage) -GtkWidget* cc_keyboard_shortcut_dialog_new (void); +GtkWidget* cc_keyboard_shortcut_page_new (void); G_END_DECLS diff --git a/panels/keyboard/cc-keyboard-shortcut-dialog.ui b/panels/keyboard/cc-keyboard-shortcut-page.ui similarity index 92% rename from panels/keyboard/cc-keyboard-shortcut-dialog.ui rename to panels/keyboard/cc-keyboard-shortcut-page.ui index 35e0e45f27..5bf7918a50 100644 --- a/panels/keyboard/cc-keyboard-shortcut-dialog.ui +++ b/panels/keyboard/cc-keyboard-shortcut-page.ui @@ -1,21 +1,16 @@ -