diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-09-19 13:25:03 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-09-19 13:25:03 -0400 |
commit | dd0da0f3ccf7241c9289f13ef394a42f94eb34f5 (patch) | |
tree | cc4d9a4e278306942a53b40c1d125ac407d166c3 /gtk/gtkpasswordentry.c | |
parent | 48594a2d7a0d075c50476aa31f0ac91ea0011f83 (diff) | |
download | gtk+-dd0da0f3ccf7241c9289f13ef394a42f94eb34f5.tar.gz |
passwordentry: Add an ::activate signalpassword-entry-activate
GtkSearchEntry has one, no reason why GtkPasswordEntry
should not as well.
Fixes: #3174
Diffstat (limited to 'gtk/gtkpasswordentry.c')
-rw-r--r-- | gtk/gtkpasswordentry.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gtk/gtkpasswordentry.c b/gtk/gtkpasswordentry.c index f49a85a56c..216ae2d915 100644 --- a/gtk/gtkpasswordentry.c +++ b/gtk/gtkpasswordentry.c @@ -88,6 +88,13 @@ struct _GtkPasswordEntryClass }; enum { + ACTIVATE, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0, }; + +enum { PROP_PLACEHOLDER_TEXT = 1, PROP_ACTIVATES_DEFAULT, PROP_SHOW_PEEK_ICON, @@ -157,6 +164,12 @@ visibility_toggled (GObject *object, } static void +activate_cb (GtkPasswordEntry *entry) +{ + g_signal_emit (entry, signals[ACTIVATE], 0); +} + +static void gtk_password_entry_init (GtkPasswordEntry *entry) { GtkEntryBuffer *buffer = gtk_password_entry_buffer_new (); @@ -167,6 +180,7 @@ gtk_password_entry_init (GtkPasswordEntry *entry) gtk_widget_set_parent (entry->entry, GTK_WIDGET (entry)); gtk_editable_init_delegate (GTK_EDITABLE (entry)); g_signal_connect_swapped (entry->entry, "notify::has-focus", G_CALLBACK (focus_changed), entry); + g_signal_connect_swapped (entry->entry, "activate", G_CALLBACK (activate_cb), entry); entry->icon = gtk_image_new_from_icon_name ("caps-lock-symbolic"); gtk_widget_set_tooltip_text (entry->icon, _("Caps Lock is on")); @@ -438,6 +452,15 @@ gtk_password_entry_class_init (GtkPasswordEntryClass *klass) g_object_class_install_properties (object_class, NUM_PROPERTIES, props); gtk_editable_install_properties (object_class, NUM_PROPERTIES); + signals[ACTIVATE] = + g_signal_new (I_("activate"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + 0, + NULL, NULL, + NULL, + G_TYPE_NONE, 0); + gtk_widget_class_set_css_name (widget_class, I_("entry")); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_TEXT_BOX); } |