summaryrefslogtreecommitdiff
path: root/gtk/gtkpasswordentry.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-09-19 13:25:03 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-09-19 13:25:03 -0400
commitdd0da0f3ccf7241c9289f13ef394a42f94eb34f5 (patch)
treecc4d9a4e278306942a53b40c1d125ac407d166c3 /gtk/gtkpasswordentry.c
parent48594a2d7a0d075c50476aa31f0ac91ea0011f83 (diff)
downloadgtk+-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.c23
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);
}