Доброго времени суток. У меня есть GtkIconView на форме. В него загружаются изображения определенного размера, следующим образом:
mw->img_list - список адресов файлов.
void loading_data(MainWin* mw, const char* file_path)
{
...
// при каждой загрузке модель очищается
gtk_list_store_clear(mw->model);
...
GtkTreeIter iter;
int i = 0;
for (i; i < g_list_length(mw->img_list) - 1; ++i)
{
char* file = image_list_get_current_file_path(mw->img_list );
mw->p1 = gdk_pixbuf_new_from_file(file,NULL);
mw->p1 = scale_pix(mw->p1,64);
gtk_list_store_append(mw->model, &iter);
gtk_list_store_set(mw->model, &iter, COL_DISPLAY_NAME,
image_list_get_current(mw->img_list), COL_PIXBUF, mw->p1, -1);
list = g_list_append(list,file);
if (!mw->img_list->current->next )
image_list_get_first(mw->img_list);
else
image_list_get_next(mw->img_list);
}
gtk_icon_view_set_text_column(GTK_ICON_VIEW(mw->view),0);
gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(mw->view), 1);
gtk_icon_view_set_selection_mode(GTK_ICON_VIEW(mw->view), GTK_SELECTION_SINGLE);
g_signal_connect(mw->view,"selection-changed",G_CALLBACK(thumbnail_selected),mw);
}
Теперь мне нужно загрузить в другой виджет изображение выделенное в GtkIconView.
void thumbnail_selected(GtkWidget* widget, MainWin* mw)
{
GList* list1 = gtk_icon_view_get_selected_items(mw->view1);
char* b = gtk_tree_path_to_string(list1->data);
int n = atoi(b);
char* c = g_list_nth_data(list,n);
loading_data(mw,c);
}
Но так как в начале функции стоит gtk_list_store_clear(mw->model); вылетает сегфолт. Если убрать вызов gtk_list_store_clear то в GtkIconView будут подгружаться каждый раз новые изображения, но старые удалятся не будут. А мне нужно что бы при каждом обновлении GtkIconView удалялись все данные в нем, и вставлялись только новые.
Спасибо.