diff options
-rw-r--r-- | data/lock-dialog-default.ui | 5 | ||||
-rw-r--r-- | src/gs-lock-plug.c | 28 |
2 files changed, 31 insertions, 2 deletions
diff --git a/data/lock-dialog-default.ui b/data/lock-dialog-default.ui index dc4e51d..4ae6fc6 100644 --- a/data/lock-dialog-default.ui +++ b/data/lock-dialog-default.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.20.0 --> +<!-- Generated with glade 3.36.0 --> <interface> <requires lib="gtk+" version="3.14"/> <object class="GtkFrame" id="lock-dialog"> @@ -151,8 +151,9 @@ <property name="can_focus">True</property> <property name="visibility">False</property> <property name="activates_default">True</property> + <property name="secondary_icon_name">emblem-readonly</property> <property name="primary_icon_activatable">False</property> - <property name="secondary_icon_activatable">False</property> + <property name="secondary_icon_tooltip_text" translatable="yes">Show password</property> <property name="input_purpose">password</property> </object> <packing> 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 @@ -2104,6 +2104,30 @@ on_note_text_buffer_changed (GtkTextBuffer *buffer, } 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) { gs_profile_start (NULL); @@ -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); |