[gnome-control-center] region: Add "clear" secondary icon to search entry



commit 702fb777b11625abc9e3851a6d30a7d2fb3b789c
Author: Bastien Nocera <hadess hadess net>
Date:   Tue Apr 26 14:38:30 2011 +0100

    region: Add "clear" secondary icon to search entry
    
    https://bugzilla.gnome.org/show_bug.cgi?id=647717

 panels/region/gnome-region-panel-layout-chooser.ui |    3 ++
 panels/region/gnome-region-panel-xkbltadd.c        |   26 ++++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/panels/region/gnome-region-panel-layout-chooser.ui b/panels/region/gnome-region-panel-layout-chooser.ui
index 43341f2..7140d82 100644
--- a/panels/region/gnome-region-panel-layout-chooser.ui
+++ b/panels/region/gnome-region-panel-layout-chooser.ui
@@ -151,6 +151,9 @@
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â?¢</property>
+                <property name="secondary-icon-name">edit-find-symbolic</property>
+                <property name="secondary-icon-activatable">False</property>
+                <property name="secondary-icon-sensitive">False</property>
               </object>
               <packing>
                 <property name="expand">False</property>
diff --git a/panels/region/gnome-region-panel-xkbltadd.c b/panels/region/gnome-region-panel-xkbltadd.c
index 2cd588a..c2a3dc4 100644
--- a/panels/region/gnome-region-panel-xkbltadd.c
+++ b/panels/region/gnome-region-panel-xkbltadd.c
@@ -244,6 +244,15 @@ xkl_layout_add_to_list (XklConfigRegistry * config,
 }
 
 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)
 {
 	GtkTreeModelFilter *filtered_model =
@@ -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));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]