From aecd77af5eaf347f6ed8ecc7527431a125ebc2b0 Mon Sep 17 00:00:00 2001 From: rbuj Date: Fri, 16 Oct 2020 11:24:05 +0200 Subject: Add Show/Hide password emblem in password entry --- src/gs-lock-plug.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c index 67b83f3..3283302 100644 --- a/src/gs-lock-plug.c +++ b/src/gs-lock-plug.c @@ -2103,6 +2103,30 @@ on_note_text_buffer_changed (GtkTextBuffer *buffer, gtk_widget_set_sensitive (plug->priv->note_ok_button, len <= NOTE_BUFFER_MAX_CHARS); } +static void +entry_icon_clicked (GtkEntry *entry, + gint position, + GdkEventButton *event, + gpointer data) +{ + (void)data; + + if ((position == GTK_ENTRY_ICON_SECONDARY) && (event->type == GDK_DOUBLE_BUTTON_PRESS)) + { + if (g_strcmp0 (gtk_entry_get_icon_name (entry, position), "emblem-readonly")) + { + gtk_entry_set_icon_from_icon_name (entry, position, "emblem-readonly"); + gtk_entry_set_icon_tooltip_text (entry, position, _("Show password")); + gtk_entry_set_visibility (entry, FALSE); + } + else + { + gtk_entry_set_icon_from_icon_name (entry, position, "emblem-unreadable"); + gtk_entry_set_icon_tooltip_text (entry, position, _("Hide password")); + gtk_entry_set_visibility (entry, TRUE); + } + } +} static void gs_lock_plug_init (GSLockPlug *plug) { @@ -2239,6 +2263,10 @@ gs_lock_plug_init (GSLockPlug *plug) gtk_entry_set_activates_default (GTK_ENTRY (plug->priv->auth_prompt_entry), TRUE); gtk_entry_set_visibility (GTK_ENTRY (plug->priv->auth_prompt_entry), FALSE); + /* show/hide password */ + g_signal_connect (plug->priv->auth_prompt_entry, "icon-press", + G_CALLBACK (entry_icon_clicked), NULL); + g_signal_connect (plug->priv->auth_unlock_button, "clicked", G_CALLBACK (unlock_button_clicked), plug); -- cgit v1.2.1