From c49a788ecd82c72406ce9708af5a978c96129b2c Mon Sep 17 00:00:00 2001 From: fenugrec Date: Thu, 16 Nov 2023 17:59:17 -0500 Subject: [PATCH] Reduce code duplication in menu.c --- src/menu.c | 48 ++++++++++++++++++------------------------------ 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/src/menu.c b/src/menu.c index 6128c33..2fecee6 100644 --- a/src/menu.c +++ b/src/menu.c @@ -6,17 +6,25 @@ #include "menu.h" #include "window-hardware.h" +// helper for common code of activate_*() functions +static void update_visibility( + GSimpleAction *action, + GtkWidget *widget +) { + GVariant *state = g_action_get_state(G_ACTION(action)); + gboolean new_state = !g_variant_get_boolean(state); + + g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); + gtk_widget_set_visible(widget, new_state); +} + static void activate_hardware( GSimpleAction *action, GVariant *parameter, gpointer data ) { - GVariant *state = g_action_get_state(G_ACTION(action)); - - gboolean new_state = !g_variant_get_boolean(state); - g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); - - gtk_widget_set_visible(window_hardware, new_state); + (void) data; + update_visibility(action, window_hardware); } static void activate_quit( @@ -34,12 +42,7 @@ static void activate_routing( ) { struct alsa_card *card = data; - GVariant *state = g_action_get_state(G_ACTION(action)); - - gboolean new_state = !g_variant_get_boolean(state); - g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); - - gtk_widget_set_visible(card->window_routing, new_state); + update_visibility(action, card->window_routing); } static void activate_mixer( @@ -49,12 +52,7 @@ static void activate_mixer( ) { struct alsa_card *card = data; - GVariant *state = g_action_get_state(G_ACTION(action)); - - gboolean new_state = !g_variant_get_boolean(state); - g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); - - gtk_widget_set_visible(card->window_mixer, new_state); + update_visibility(action, card->window_mixer); } static void activate_levels( @@ -64,12 +62,7 @@ static void activate_levels( ) { struct alsa_card *card = data; - GVariant *state = g_action_get_state(G_ACTION(action)); - - gboolean new_state = !g_variant_get_boolean(state); - g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); - - gtk_widget_set_visible(card->window_levels, new_state); + update_visibility(action, card->window_levels); } static void activate_startup( @@ -79,12 +72,7 @@ static void activate_startup( ) { struct alsa_card *card = data; - GVariant *state = g_action_get_state(G_ACTION(action)); - - gboolean new_state = !g_variant_get_boolean(state); - g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state)); - - gtk_widget_set_visible(card->window_startup, new_state); + update_visibility(action, card->window_startup); } static const GActionEntry app_entries[] = {