From fb5ae3d7fad6b47ab6acddb0a640b8f073f02da7 Mon Sep 17 00:00:00 2001 From: Bruce Cowan <bruce@bcowan.me.uk> Date: Tue, 25 Oct 2022 09:53:27 +0100 Subject: [PATCH] Use action for showing try filter --- data/gtk/help-overlay.blp | 5 +++++ data/gtk/window.blp | 3 +-- src/main.c | 3 +++ src/rugby-app-window.c | 11 +++++++---- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/data/gtk/help-overlay.blp b/data/gtk/help-overlay.blp index 633ef9a..218adf2 100644 --- a/data/gtk/help-overlay.blp +++ b/data/gtk/help-overlay.blp @@ -27,6 +27,11 @@ ShortcutsWindow help_overlay { title: "Decrement score"; action-name: "win.score-changed::down"; } + + ShortcutsShortcut { + title: "Show try filter"; + action-name: "win.show-try-filter"; + } } } } diff --git a/data/gtk/window.blp b/data/gtk/window.blp index 1045cc9..0b31f50 100644 --- a/data/gtk/window.blp +++ b/data/gtk/window.blp @@ -24,10 +24,9 @@ template RugbyAppWindow : Adw.ApplicationWindow { } ToggleButton filter_toggle { + action-name: "win.show-try-filter"; icon-name: "funnel"; tooltip-text: "Show Try Filter"; - - toggled => filter_toggle_toggled_cb(); } [end] diff --git a/src/main.c b/src/main.c index 2777032..1c9abb0 100644 --- a/src/main.c +++ b/src/main.c @@ -77,6 +77,9 @@ on_startup (GApplication *app, gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.score-changed::down", (const char*[]) { "<Ctrl>Down", "<Ctrl>Left", NULL }); + gtk_application_set_accels_for_action (GTK_APPLICATION (app), + "win.show-try-filter", + (const char*[]) { "<Ctrl>F", NULL }); } int diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c index 4c5a692..fc77882 100644 --- a/src/rugby-app-window.c +++ b/src/rugby-app-window.c @@ -148,12 +148,13 @@ try_filter_func (gpointer item, } static void -filter_toggle_toggled_cb (GtkToggleButton *btn, - gpointer user_data) +show_try_filter_change_state (GSimpleAction *action, + GVariant *value, + gpointer user_data) { RugbyAppWindow *self = RUGBY_APP_WINDOW (user_data); - if (gtk_toggle_button_get_active (btn)) + if (g_variant_get_boolean (value)) { gtk_custom_filter_set_filter_func (self->try_filter, try_filter_func, self, NULL); gtk_filter_changed (GTK_FILTER (self->try_filter), GTK_FILTER_CHANGE_DIFFERENT); @@ -162,6 +163,8 @@ filter_toggle_toggled_cb (GtkToggleButton *btn, { gtk_custom_filter_set_filter_func (self->try_filter, NULL, NULL, NULL); } + + g_simple_action_set_state (action, value); } static void @@ -171,6 +174,7 @@ rugby_app_window_init (RugbyAppWindow *self) const GActionEntry win_entries[] = { { .name = "score-changed", .activate = activate_score_changed, .parameter_type = "s" }, + { .name = "show-try-filter", .state = "false", .change_state = show_try_filter_change_state }, }; g_action_map_add_action_entries (G_ACTION_MAP (self), @@ -201,7 +205,6 @@ rugby_app_window_class_init (RugbyAppWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, try_filter); - gtk_widget_class_bind_template_callback (widget_class, filter_toggle_toggled_cb); gtk_widget_class_bind_template_callback (widget_class, try_spin_value_changed_cb); gtk_widget_class_bind_template_callback (widget_class, item_tooltip_cb); gtk_widget_class_bind_template_callback (widget_class, list_store_items_changed_cb); -- GitLab