diff --git a/source/ubl-settings-usergroups-group.c b/source/ubl-settings-usergroups-group.c index 488b722..45bbc6c 100644 --- a/source/ubl-settings-usergroups-group.c +++ b/source/ubl-settings-usergroups-group.c @@ -1,8 +1,5 @@ #include "ubl-settings-usergroups.h" - - - ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group_creation_new(){ ubl_settings_usergroups_group_creation_window *window = malloc(sizeof(ubl_settings_usergroups_group_creation_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group_creation); diff --git a/source/ubl-settings-usergroups-password.c b/source/ubl-settings-usergroups-password.c index ce1bfaa..994090a 100644 --- a/source/ubl-settings-usergroups-password.c +++ b/source/ubl-settings-usergroups-password.c @@ -17,8 +17,6 @@ void on_password_user_changed(GtkComboBox *,ubl_settings_usergroups_user_window } } - - void on_password_change(GtkWidget *, dictionary *entry_dict){ GtkEntry *output_target = yon_dictionary_get_data(entry_dict->first->next,GtkEntry*); ubl_settings_usergroups_password_window *window = yon_ubl_settings_usergroups_password_new(); diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 93c9c69..20693dc 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1183,6 +1183,22 @@ void on_group_clicked(GtkCellRenderer *, char *path, ubl_settings_usergroups_gro gtk_list_store_set(window->list,&iter,0,!status,-1); } +gboolean on_group_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){ + char *target; + int id; + gtk_tree_model_get(model, iter, 1,&target, 2, &id,-1); + char *string_utf = g_utf8_casefold(key,-1); + char *target_utf = g_utf8_casefold(target,-1); + char *id_str = yon_char_from_int(id); + char *loc_target_utf = g_utf8_casefold(id_str,-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)); +} + ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int mode){ // 1 - user, 0 - group ubl_settings_usergroups_group_window *window = malloc(sizeof(ubl_settings_usergroups_group_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group); @@ -1200,6 +1216,7 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox"); window->list = gtk_list_store_new(3,G_TYPE_BOOLEAN,G_TYPE_STRING,G_TYPE_INT); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),2,GTK_SORT_ASCENDING); + gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(window->GroupsTree),(GtkTreeViewSearchEqualFunc)on_group_search_func,window,NULL); yon_gtk_entry_block_symbols(GTK_ENTRY(window->AddNewEntry),";.'\"*%$#!-=+\\|/_@^&()№:?<>"); yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow"); diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index 91ee45d..5969429 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -651,4 +651,5 @@ gboolean on_login_focus_event(GtkWidget *self, GdkEvent *, ubl_settings_usergrou gboolean on_login_focus_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window); gboolean on_login_tooltip_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window); gboolean on_login_tooltip_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window); +gboolean on_group_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *); #endif \ No newline at end of file