diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2019-04-02 10:54:49 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2019-04-02 10:57:34 +0200 |
commit | 29447881ef63509eb5c98e4584dd680fce7b32f7 (patch) | |
tree | 1dbf367f9d99a848e153e96e85cd80070933f617 | |
parent | 4b3795ccb79a34b433da8ad6f0c42b9b6f1dd7d4 (diff) | |
download | network-manager-applet-29447881ef63509eb5c98e4584dd680fce7b32f7.tar.gz |
vpn-password-dialog: focus the first visible and empty field
Convenient if we have a saved password and a non-saved OTP.
-rw-r--r-- | src/libnma/nma-vpn-password-dialog.c | 20 | ||||
-rw-r--r-- | src/libnma/tests/vpn-password-dialog.c | 3 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/libnma/nma-vpn-password-dialog.c b/src/libnma/nma-vpn-password-dialog.c index 7ff13e66..df5d2278 100644 --- a/src/libnma/nma-vpn-password-dialog.c +++ b/src/libnma/nma-vpn-password-dialog.c @@ -104,13 +104,21 @@ dialog_show_callback (GtkWidget *widget, gpointer callback_data) { NMAVpnPasswordDialog *dialog = NMA_VPN_PASSWORD_DIALOG (callback_data); NMAVpnPasswordDialogPrivate *priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); + GtkWidget *to_focus = NULL; - if (gtk_widget_get_visible (priv->password_entry)) - gtk_widget_grab_focus (priv->password_entry); - else if (gtk_widget_get_visible (priv->password_entry_secondary)) - gtk_widget_grab_focus (priv->password_entry_secondary); - else if (gtk_widget_get_visible (priv->password_entry_tertiary)) - gtk_widget_grab_focus (priv->password_entry_tertiary); + if ( gtk_widget_get_visible (priv->password_entry_tertiary) + && gtk_entry_get_text_length (GTK_ENTRY (priv->password_entry_tertiary)) == 0) { + to_focus = priv->password_entry_tertiary; + } + + if ( gtk_widget_get_visible (priv->password_entry_secondary) + && gtk_entry_get_text_length (GTK_ENTRY (priv->password_entry_secondary)) == 0) { + to_focus = priv->password_entry_secondary; + } + + if (to_focus == NULL) + to_focus = priv->password_entry; + gtk_widget_grab_focus (to_focus); } static void diff --git a/src/libnma/tests/vpn-password-dialog.c b/src/libnma/tests/vpn-password-dialog.c index d3e58175..ededcc6e 100644 --- a/src/libnma/tests/vpn-password-dialog.c +++ b/src/libnma/tests/vpn-password-dialog.c @@ -33,11 +33,10 @@ main (int argc, char *argv[]) nma_vpn_password_dialog_set_password (NMA_VPN_PASSWORD_DIALOG (widget), "Password One"); nma_vpn_password_dialog_set_password_label (NMA_VPN_PASSWORD_DIALOG (widget), "First _Label"); - nma_vpn_password_dialog_set_password_secondary (NMA_VPN_PASSWORD_DIALOG (widget), "Password Two"); + nma_vpn_password_dialog_set_password_secondary (NMA_VPN_PASSWORD_DIALOG (widget), ""); nma_vpn_password_dialog_set_password_secondary_label (NMA_VPN_PASSWORD_DIALOG (widget), "_Second Label"); nma_vpn_password_dialog_set_show_password_secondary (NMA_VPN_PASSWORD_DIALOG (widget), TRUE); - nma_vpn_password_dialog_set_password_ternary (NMA_VPN_PASSWORD_DIALOG (widget), "Password Three"); nma_vpn_password_dialog_set_password_ternary_label (NMA_VPN_PASSWORD_DIALOG (widget), "_Third Label"); nma_vpn_password_dialog_set_show_password_ternary (NMA_VPN_PASSWORD_DIALOG (widget), TRUE); |