Пустые строки в GtkListBox
Я разрабатываю своё приложение (под десктоп) в котором прибегнул к помощи GtkListBox.
Заполнение виджета происходит следующим образом:
void __dial_fill_dir_list(GtkWidget *list_box, char *path) {
GtkWidget *dir_element = NULL, *elm_box = NULL;
struct dirent *entry = NULL;
DIR *dirptr = NULL;
int i = 0;
dirptr = opendir(path);
if (!dirptr) {
perror("fd");
return ;
}
entry = readdir(dirptr);
while (entry) {
elm_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
dir_element = gtk_label_new(entry->d_name);
gtk_label_set_justify(GTK_LABEL(dir_element), GTK_JUSTIFY_LEFT);
gtk_box_pack_start(GTK_BOX(elm_box), dir_element, FALSE, FALSE, 5);
gtk_list_box_insert(GTK_LIST_BOX(list_box), elm_box, i++);
entry = readdir(dirptr);
}
closedir(dirptr);
}
Далее, мне требуется изменить наполнение виджета, это происходит так:
void __dial_go_by_addr_bttn_click(GtkWidget *bttn, gpointer data) {
GtkWidget *addr_entry, *list_box;
char *path = NULL;
addr_entry = *(GtkWidget**)pl_read("msg:dial_addr_entry");
path = (char*)gtk_entry_get_text(GTK_ENTRY(addr_entry));
list_box = *(GtkWidget**)pl_read("msg:dial_list_box");
__dial_list_box_clear(list_box);
__dial_fill_dir_list(list_box, path);
}
(Не обращайте внимания на функции с префиксом pl). Очистка GtkListBox выглядит так:
void __dial_remove_widget_glib_func(GtkWidget *element, GtkWidget *list_box) {
gtk_container_remove(GTK_CONTAINER(list_box), element);
}
void __dial_list_box_clear(GtkWidget *list_box) {
GList *child_list;
child_list = gtk_container_get_children(GTK_CONTAINER(list_box));
g_list_foreach(child_list, (GFunc)__dial_remove_widget_glib_func, list_box);
}
Однако, проблема в том, что после удаления и повторного наполнения виджета, вместо заведомых GtkLabel, появляется пустой список, в котором все строки пусты. Не знаю, с чем это может быть связано. Всё что знал - переползал, ничего не нашёл.