From c6196729bec25b83432a067f57f5e322025ef2ac Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 16 Nov 2021 14:55:07 +0100 Subject: make 'next' button grab default when it becomes sensitive (#7087) --- src/anastasis/anastasis-gtk_action.c | 21 ++++++++++----------- .../anastasis-gtk_handle-country-activated.c | 2 +- .../anastasis-gtk_handle-country-unselected.c | 2 +- .../anastasis-gtk_handle-currency-changed.c | 2 +- .../anastasis-gtk_handle-identity-changed.c | 2 +- src/anastasis/anastasis-gtk_helper.c | 18 ++++++++++++++++++ src/anastasis/anastasis-gtk_helper.h | 9 ++++++++- 7 files changed, 40 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/anastasis/anastasis-gtk_action.c b/src/anastasis/anastasis-gtk_action.c index 98a3c51..13a9a63 100644 --- a/src/anastasis/anastasis-gtk_action.c +++ b/src/anastasis/anastasis-gtk_action.c @@ -144,7 +144,7 @@ action_continent_selecting (void) AG_hide ("anastasis_gtk_backup_progress_scrolled_window"); } AG_show ("anastasis_gtk_main_window_prev_button"); - AG_show ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); AG_show ("anastasis_gtk_main_control_vbox"); AG_show ("anastasis_gtk_continent_frame"); } @@ -240,7 +240,7 @@ action_country_selecting (void) AG_hide ("anastasis_gtk_backup_progress_scrolled_window"); } AG_show ("anastasis_gtk_main_window_prev_button"); - AG_show ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); AG_show ("anastasis_gtk_continent_frame"); } @@ -643,7 +643,7 @@ action_user_attributes_collecting (void) } AG_show ("anastasis_gtk_main_control_vbox"); AG_show ("anastasis_gtk_main_window_prev_button"); - AG_show ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); AG_show ("anastasis_gtk_identity_frame"); AG_focus ("anastasis_gtk_ia_full_name_entry"); } @@ -805,7 +805,7 @@ action_authentications_editing (void) AG_sensitive ("anastasis_gtk_main_window_prev_button"); if (have_auth) - AG_sensitive ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); else AG_insensitive ("anastasis_gtk_main_window_forward_button"); AG_show ("anastasis_gtk_progress_vbox"); @@ -814,7 +814,7 @@ action_authentications_editing (void) AG_hide ("anastasis_gtk_recovery_progress_scrolled_window"); AG_show ("anastasis_gtk_main_control_vbox"); AG_show ("anastasis_gtk_main_window_prev_button"); - AG_show ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); AG_show ("anastasis_gtk_b_authentication_frame"); } @@ -1050,7 +1050,6 @@ action_policies_reviewing (void) gtk_tree_view_expand_all (tv); } AG_sensitive ("anastasis_gtk_main_window_prev_button"); - AG_sensitive ("anastasis_gtk_main_window_forward_button"); AG_show ("anastasis_gtk_progress_vbox"); AG_progress_update (); AG_show ("anastasis_gtk_backup_progress_scrolled_window"); @@ -1058,7 +1057,7 @@ action_policies_reviewing (void) AG_show ("anastasis_gtk_b_policy_frame"); AG_show ("anastasis_gtk_main_control_vbox"); AG_show ("anastasis_gtk_main_window_prev_button"); - AG_show ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); } @@ -1300,7 +1299,7 @@ action_secret_editing (void) if ( (NULL != text) || (NULL != filename) ) { - AG_sensitive ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); } if (NULL != text) { @@ -1338,7 +1337,7 @@ action_secret_editing (void) AG_show ("anastasis_gtk_enter_secret_frame"); AG_show ("anastasis_gtk_main_control_vbox"); AG_show ("anastasis_gtk_main_window_prev_button"); - AG_show ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); } @@ -2059,7 +2058,7 @@ action_secret_selecting (void) } else { - AG_sensitive ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); sn = json_string_value (json_object_get (rd, "secret_name")); if (NULL != sn) @@ -2084,7 +2083,7 @@ action_secret_selecting (void) AG_show ("anastasis_gtk_select_secret_frame"); AG_show ("anastasis_gtk_main_window_prev_button"); AG_hide ("anastasis_gtk_main_window_quit_button"); - AG_show ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); } diff --git a/src/anastasis/anastasis-gtk_handle-country-activated.c b/src/anastasis/anastasis-gtk_handle-country-activated.c index dc16e97..2c80b61 100644 --- a/src/anastasis/anastasis-gtk_handle-country-activated.c +++ b/src/anastasis/anastasis-gtk_handle-country-activated.c @@ -55,7 +55,7 @@ anastasis_gtk_country_selection_changed_cb (GtkTreeSelection *treeselection, AG_insensitive ("anastasis_gtk_main_window_forward_button"); return; } - AG_sensitive ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); gtk_tree_model_get (model, &iter, AG_CCMC_COUNTRY_CODE, diff --git a/src/anastasis/anastasis-gtk_handle-country-unselected.c b/src/anastasis/anastasis-gtk_handle-country-unselected.c index 5ddbc17..9341b6f 100644 --- a/src/anastasis/anastasis-gtk_handle-country-unselected.c +++ b/src/anastasis/anastasis-gtk_handle-country-unselected.c @@ -45,7 +45,7 @@ anastasis_gtk_country_unselected (GtkTreeSelection *selection, if (gtk_tree_selection_get_selected (selection, &model, NULL)) - AG_sensitive ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); else AG_insensitive ("anastasis_gtk_main_window_forward_button"); } diff --git a/src/anastasis/anastasis-gtk_handle-currency-changed.c b/src/anastasis/anastasis-gtk_handle-currency-changed.c index 75be227..ba38b6f 100644 --- a/src/anastasis/anastasis-gtk_handle-currency-changed.c +++ b/src/anastasis/anastasis-gtk_handle-currency-changed.c @@ -72,7 +72,7 @@ anastasis_gtk_currency_selection_changed_cb (GtkTreeSelection *treeselection, &select_cb, &have_sel); if (have_sel) - AG_sensitive ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); else AG_insensitive ("anastasis_gtk_main_window_forward_button"); } diff --git a/src/anastasis/anastasis-gtk_handle-identity-changed.c b/src/anastasis/anastasis-gtk_handle-identity-changed.c index ea9c8b2..5edc95f 100644 --- a/src/anastasis/anastasis-gtk_handle-identity-changed.c +++ b/src/anastasis/anastasis-gtk_handle-identity-changed.c @@ -86,7 +86,7 @@ void AG_identity_changed (void) { if (check_attributes_fullfilled ()) - AG_sensitive ("anastasis_gtk_main_window_forward_button"); + AG_enable_next (); else AG_insensitive ("anastasis_gtk_main_window_forward_button"); } diff --git a/src/anastasis/anastasis-gtk_helper.c b/src/anastasis/anastasis-gtk_helper.c index 095b7ce..edea3e9 100644 --- a/src/anastasis/anastasis-gtk_helper.c +++ b/src/anastasis/anastasis-gtk_helper.c @@ -226,6 +226,24 @@ GCG_get_main_window_object (const char *name) } +/** + * Make the 'next' button sensitive (and trigger it via 'Return'). + */ +void +AG_enable_next (void) +{ + GtkWidget *fwd; + + AG_show ("anastasis_gtk_main_window_forward_button"); + fwd = GTK_WIDGET (GCG_get_main_window_object ( + "anastasis_gtk_main_window_forward_button")); + gtk_widget_set_can_default (fwd, + true); + gtk_widget_grab_default (fwd); + +} + + void AG_error_clear () { diff --git a/src/anastasis/anastasis-gtk_helper.h b/src/anastasis/anastasis-gtk_helper.h index 91773df..8fda696 100644 --- a/src/anastasis/anastasis-gtk_helper.h +++ b/src/anastasis/anastasis-gtk_helper.h @@ -206,7 +206,7 @@ enum AG_ProviderModelColumns enum AG_BackupProviderColumns { /** - * A gchararray. + * A gchararray. */ AG_BPC_PROVIDER_URL = 0, @@ -399,6 +399,13 @@ void AG_sensitive (const char *name); +/** + * Make the 'next' button sensitive (and trigger it via 'Return'). + */ +void +AG_enable_next (void); + + /** * Make widget of the given @a name the focus. * -- cgit v1.2.3