diff src/gtkroomlist.c @ 11490:1ae1454204cd

[gaim-migrate @ 13733] make the type-ahead/ctrl-f searching in the buddy list case insensitive, and add type-ahead/ctrl-f searching to the roomlist (room names only) committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Sat, 10 Sep 2005 18:21:27 +0000
parents a511b77a368b
children 255e6912607b
line wrap: on
line diff
--- a/src/gtkroomlist.c	Sat Sep 10 17:30:21 2005 +0000
+++ b/src/gtkroomlist.c	Sat Sep 10 18:21:27 2005 +0000
@@ -496,6 +496,25 @@
 		return 1;
 }
 
+static gboolean
+_search_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer search_data)
+{
+	gboolean result;
+	gchar *name, *fold, *fkey;
+
+	gtk_tree_model_get(model, iter, column, &name, -1);
+	fold = g_utf8_casefold(name, -1);
+	fkey = g_utf8_casefold(key, -1);
+
+	result = (g_strstr_len(fold, strlen(fold), fkey) == NULL);
+
+	g_free(fold);
+	g_free(fkey);
+	g_free(name);
+
+	return result;
+}
+
 static void gaim_gtk_roomlist_set_fields(GaimRoomlist *list, GList *fields)
 {
 	GaimGtkRoomlist *grl = list->ui_data;
@@ -585,6 +604,11 @@
 	g_signal_connect(G_OBJECT(tree), "button-press-event", G_CALLBACK(room_click_cb), list);
 	g_signal_connect(G_OBJECT(tree), "row-expanded", G_CALLBACK(row_expanded_cb), list);
 	g_signal_connect(G_OBJECT(tree), "row-activated", G_CALLBACK(row_activated_cb), list);
+
+	/* Enable CTRL+F searching */
+	gtk_tree_view_set_search_column(GTK_TREE_VIEW(tree), NAME_COLUMN);
+	gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(tree), _search_func, NULL, NULL);
+
 }
 
 static gboolean gaim_gtk_progress_bar_pulse(gpointer data)