diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 1a2d2c5..0333a4f 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -131,12 +131,18 @@ int yon_char_parsed_compare(const void *a, const void *b){ } gboolean on_languages_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){ - char *language, *language_localised; - gtk_tree_model_get(model,iter,1,&language,4,&language_localised,-1); - if (strstr(language,key)||strstr(language_localised,key)){ - return 0; - } - return 1; + char *target; + char *loc_target; + gtk_tree_model_get(model, iter, 1,&target, 4, &loc_target,-1); + char *string_utf = g_utf8_casefold(key,-1); + char *target_utf = g_utf8_casefold(target,-1); + char *loc_target_utf = g_utf8_casefold(loc_target,-1); + + char *string_normalized = g_utf8_strdown(g_utf8_normalize(string_utf,-1,G_NORMALIZE_DEFAULT),-1); + char *target_normalized = g_utf8_strdown(g_utf8_normalize(target_utf,-1,G_NORMALIZE_DEFAULT),-1); + char *loc_target_normalized = g_utf8_strdown(g_utf8_normalize(loc_target_utf,-1,G_NORMALIZE_DEFAULT),-1); + + return !(g_str_has_prefix(target_normalized,string_normalized) || g_str_has_prefix(loc_target_normalized,string_normalized)); } void set_locales_list(main_window *widgets){