[gtk/widget-class-actions: 3/12] password entry: Adapt to action name change
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/widget-class-actions: 3/12] password entry: Adapt to action name change
- Date: Tue, 18 Jun 2019 14:01:33 +0000 (UTC)
commit 259c264fd091af2973c2aadca969f6f1b9472d7a
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jun 15 19:30:10 2019 +0000
password entry: Adapt to action name change
Also fix updating the icon when changing visibility
via the context menu.
gtk/gtkpasswordentry.c | 39 ++++++++++++++++++++++++++++++---------
1 file changed, 30 insertions(+), 9 deletions(-)
---
diff --git a/gtk/gtkpasswordentry.c b/gtk/gtkpasswordentry.c
index ef0651600c..4ad727decf 100644
--- a/gtk/gtkpasswordentry.c
+++ b/gtk/gtkpasswordentry.c
@@ -110,20 +110,30 @@ focus_changed (GtkWidget *widget)
static void
gtk_password_entry_toggle_peek (GtkPasswordEntry *entry)
+{
+ GtkPasswordEntryPrivate *priv = gtk_password_entry_get_instance_private (entry);
+ gboolean visibility;
+
+ visibility = gtk_text_get_visibility (GTK_TEXT (priv->entry));
+ gtk_text_set_visibility (GTK_TEXT (priv->entry), !visibility);
+}
+
+static void
+visibility_toggled (GObject *object,
+ GParamSpec *pspec,
+ GtkPasswordEntry *entry)
{
GtkPasswordEntryPrivate *priv = gtk_password_entry_get_instance_private (entry);
if (gtk_text_get_visibility (GTK_TEXT (priv->entry)))
{
- gtk_text_set_visibility (GTK_TEXT (priv->entry), FALSE);
- gtk_image_set_from_icon_name (GTK_IMAGE (priv->peek_icon), "eye-not-looking-symbolic");
- gtk_widget_set_tooltip_text (priv->peek_icon, _("Show text"));
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->peek_icon), "eye-open-negative-filled-symbolic");
+ gtk_widget_set_tooltip_text (priv->peek_icon, _("Hide text"));
}
else
{
- gtk_text_set_visibility (GTK_TEXT (priv->entry), TRUE);
- gtk_image_set_from_icon_name (GTK_IMAGE (priv->peek_icon), "eye-open-negative-filled-symbolic");
- gtk_widget_set_tooltip_text (priv->peek_icon, _("Hide text"));
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->peek_icon), "eye-not-looking-symbolic");
+ gtk_widget_set_tooltip_text (priv->peek_icon, _("Show text"));
}
}
@@ -482,11 +492,18 @@ gtk_password_entry_set_show_peek_icon (GtkPasswordEntry *entry,
g_signal_connect_swapped (press, "released",
G_CALLBACK (gtk_password_entry_toggle_peek), entry);
gtk_widget_add_controller (priv->peek_icon, GTK_EVENT_CONTROLLER (press));
+
+ g_signal_connect (priv->entry, "notify::visibility",
+ G_CALLBACK (visibility_toggled), entry);
+ visibility_toggled (G_OBJECT (priv->entry), NULL, entry);
}
else
{
g_clear_pointer (&priv->peek_icon, gtk_widget_unparent);
gtk_text_set_visibility (GTK_TEXT (priv->entry), FALSE);
+ g_signal_handlers_disconnect_by_func (priv->entry,
+ visibility_toggled,
+ entry);
}
keymap_state_changed (priv->keymap, GTK_WIDGET (entry));
@@ -532,13 +549,17 @@ gtk_password_entry_set_extra_menu (GtkPasswordEntry *entry,
g_return_if_fail (GTK_IS_PASSWORD_ENTRY (entry));
- if (!g_set_object (&priv->extra_menu, model))
- return;
+ /* bypass this check for the initial call from init */
+ if (priv->extra_menu)
+ {
+ if (!g_set_object (&priv->extra_menu, model))
+ return;
+ }
menu = g_menu_new ();
section = g_menu_new ();
- item = g_menu_item_new (_("_Show Text"), "context.toggle-visibility");
+ item = g_menu_item_new (_("_Show Text"), "misc.toggle-visibility");
g_menu_item_set_attribute (item, "touch-icon", "s", "eye-not-looking-symbolic");
g_menu_append_item (section, item);
g_object_unref (item);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]