# HG changeset patch # User Stu Tomlinson # Date 1126376487 0 # Node ID 1ae1454204cd3e5e6f7c2976e800d6c34d030eff # Parent 63e339161d83680e3e876af3753283b7977d084c [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 diff -r 63e339161d83 -r 1ae1454204cd src/gtkblist.c --- a/src/gtkblist.c Sat Sep 10 17:30:21 2005 +0000 +++ b/src/gtkblist.c Sat Sep 10 18:21:27 2005 +0000 @@ -3468,19 +3468,20 @@ gchar *enteredstring; gchar *withmarkup; gchar *nomarkup; - const gchar *normalized; + gchar *normalized; gtk_tree_model_get(model, iter, column, &withmarkup, -1); - enteredstring = g_strdup(gaim_normalize(NULL, key)); + enteredstring = g_utf8_casefold(gaim_normalize(NULL, key), -1); nomarkup = gaim_markup_strip_html(withmarkup); - normalized = gaim_normalize(NULL, nomarkup); + normalized = g_utf8_casefold(gaim_normalize(NULL, nomarkup), -1); result = (g_strstr_len(normalized, strlen(normalized), enteredstring) == NULL); g_free(withmarkup); g_free(enteredstring); g_free(nomarkup); + g_free(normalized); return result; } diff -r 63e339161d83 -r 1ae1454204cd src/gtkroomlist.c --- 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)