From 702fb777b11625abc9e3851a6d30a7d2fb3b789c Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 26 Apr 2011 14:38:30 +0100 Subject: [PATCH] region: Add "clear" secondary icon to search entry https://bugzilla.gnome.org/show_bug.cgi?id=647717 --- .../gnome-region-panel-layout-chooser.ui | 3 +++ panels/region/gnome-region-panel-xkbltadd.c | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/panels/region/gnome-region-panel-layout-chooser.ui b/panels/region/gnome-region-panel-layout-chooser.ui index 43341f26b..7140d82d9 100644 --- a/panels/region/gnome-region-panel-layout-chooser.ui +++ b/panels/region/gnome-region-panel-layout-chooser.ui @@ -151,6 +151,9 @@ True True + edit-find-symbolic + False + False False diff --git a/panels/region/gnome-region-panel-xkbltadd.c b/panels/region/gnome-region-panel-xkbltadd.c index 2cd588af0..c2a3dc417 100644 --- a/panels/region/gnome-region-panel-xkbltadd.c +++ b/panels/region/gnome-region-panel-xkbltadd.c @@ -243,6 +243,15 @@ xkl_layout_add_to_list (XklConfigRegistry * config, g_free (language_desc); } +static void +xkb_layout_filter_clear (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GdkEvent *event, + gpointer user_data) +{ + gtk_entry_set_text (entry, ""); +} + static void xkb_layout_filter_changed (GtkBuilder * chooser_dialog) { @@ -254,6 +263,20 @@ xkb_layout_filter_changed (GtkBuilder * chooser_dialog) gtk_entry_get_text (GTK_ENTRY (xkb_layout_filter)); gchar *upattern = g_utf8_strup (pattern, -1); + if (!g_strcmp0 (pattern, "")) { + g_object_set (G_OBJECT (xkb_layout_filter), + "secondary-icon-name", "edit-find-symbolic", + "secondary-icon-activatable", FALSE, + "secondary-icon-sensitive", FALSE, + NULL); + } else { + g_object_set (G_OBJECT (xkb_layout_filter), + "secondary-icon-name", "edit-clear-symbolic", + "secondary-icon-activatable", TRUE, + "secondary-icon-sensitive", TRUE, + NULL); + } + if (search_pattern_list != NULL) g_strfreev (search_pattern_list); @@ -363,6 +386,9 @@ xkb_layout_choose (GtkBuilder * dialog) (xkb_layout_filter_changed), chooser_dialog); + g_signal_connect (G_OBJECT (xkb_layout_filter), "icon-release", + G_CALLBACK (xkb_layout_filter_clear), NULL); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (xkb_filtered_layouts_list));