summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2019-04-02 10:54:49 +0200
committerLubomir Rintel <lkundrak@v3.sk>2019-04-02 10:57:34 +0200
commit29447881ef63509eb5c98e4584dd680fce7b32f7 (patch)
tree1dbf367f9d99a848e153e96e85cd80070933f617
parent4b3795ccb79a34b433da8ad6f0c42b9b6f1dd7d4 (diff)
downloadnetwork-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.c20
-rw-r--r--src/libnma/tests/vpn-password-dialog.c3
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);