summaryrefslogtreecommitdiff
path: root/gtk/gtksearchentry.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2013-07-28 20:21:28 -0400
committerMatthias Clasen <mclasen@redhat.com>2013-07-28 20:21:28 -0400
commit1b135b28c0d8202b3fcc46682e3334af85e51b3b (patch)
treec6bd30904f3f4c89599f49b7fd5dec46723af359 /gtk/gtksearchentry.c
parent0e350eeea6d962f9edb4a381b7388166d99e2763 (diff)
downloadgtk+-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.c21
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",