diff options
author | Matthias Clasen <mclasen@redhat.com> | 2013-07-28 20:21:28 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2013-07-28 20:21:28 -0400 |
commit | 1b135b28c0d8202b3fcc46682e3334af85e51b3b (patch) | |
tree | c6bd30904f3f4c89599f49b7fd5dec46723af359 /gtk/gtksearchentry.c | |
parent | 0e350eeea6d962f9edb4a381b7388166d99e2763 (diff) | |
download | gtk+-1b135b28c0d8202b3fcc46682e3334af85e51b3b.tar.gz |
GtkSearchEntry: improve clear icon implementation
Instead of connecting to our own signal, which is generally
considered somewhat unclean, override the class handler
for the icon-release signal.
Diffstat (limited to 'gtk/gtksearchentry.c')
-rw-r--r-- | gtk/gtksearchentry.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/gtk/gtksearchentry.c b/gtk/gtksearchentry.c index c785a08446..0487098647 100644 --- a/gtk/gtksearchentry.c +++ b/gtk/gtksearchentry.c @@ -75,20 +75,23 @@ gtk_search_entry_finalize (GObject *object) } static void +search_entry_clear_cb (GtkEntry *entry, + GtkEntryIconPosition icon_pos) +{ + if (icon_pos == GTK_ENTRY_ICON_SECONDARY) + gtk_entry_set_text (entry, ""); +} + +static void gtk_search_entry_class_init (GtkSearchEntryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = gtk_search_entry_finalize; -} -static void -search_entry_clear_cb (GtkEntry *entry, - GtkEntryIconPosition icon_pos, - gpointer user_data) -{ - if (icon_pos == GTK_ENTRY_ICON_SECONDARY) - gtk_entry_set_text (entry, ""); + g_signal_override_class_handler ("icon-release", + GTK_TYPE_SEARCH_ENTRY, + G_CALLBACK (search_entry_clear_cb)); } static gboolean @@ -170,8 +173,6 @@ gtk_search_entry_init (GtkSearchEntry *entry) { g_signal_connect (entry, "changed", G_CALLBACK (search_entry_changed_cb), NULL); - g_signal_connect (entry, "icon-release", - G_CALLBACK (search_entry_clear_cb), NULL); g_object_set (entry, "primary-icon-name", "edit-find-symbolic", |