Господа... :) Столкнулся с довольно неприятной проблемой. Суть ее сводится к тому, что если в обработчике сигнала "changed" GtkTreeSelection выполнить gtk_widget_destroy для GtkTreeView этого GtkTreeSelection'а, то приложение падает с Segmentation fault'ом. Насколько я понимаю, это происходит из-за того, что GTK после вызова обработчика производит какие-то действия с GtkTreeView/GtkTreeSelection/GtkTreeModel, а т. к. я уничтожаю GtkTreeView в обработчике сигнала, то GTK обращается по старому указателю на уже несуществующий объект. Может быть я что-то не так делаю? Подскажите пожалуйста, как можно избежать данной ошибки. Вот пример приложения, которое аварийно завершается, если щелкнуть мышью по строке GtkTreeView: #include <gtk/gtk.h> GtkWidget *treeview; void change_callback(GtkTreeSelection *treeselection, gpointer user_data) { gtk_widget_destroy(treeview); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *vbox; GtkTreeIter iter; GtkTreeModel *items_model; GtkCellRenderer *renderer; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); vbox = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(window), vbox); items_model = GTK_TREE_MODEL(gtk_list_store_new(1, G_TYPE_INT)); gtk_list_store_append(GTK_LIST_STORE(items_model), &iter); gtk_list_store_set(GTK_LIST_STORE(items_model), &iter, 0, 1, -1); treeview = gtk_tree_view_new_with_model(items_model); g_object_unref (items_model); renderer = gtk_cell_renderer_combo_new(); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, "Name", renderer, "text", 0, NULL); g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview))) , "changed", G_CALLBACK(change_callback), NULL); gtk_box_pack_start(GTK_BOX(vbox), treeview, FALSE, FALSE, 0); gtk_widget_show_all (window); gtk_main(); }
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от KonishchevDmitry
Ответ на:
комментарий
от Bohtvaroh
Ответ на:
комментарий
от Bohtvaroh
Ответ на:
комментарий
от KonishchevDmitry
Ответ на:
комментарий
от KonishchevDmitry
Ответ на:
комментарий
от Bohtvaroh
Ответ на:
комментарий
от Bohtvaroh
Ответ на:
комментарий
от Bohtvaroh
Ответ на:
комментарий
от KonishchevDmitry
Ответ на:
комментарий
от KonishchevDmitry
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Bohtvaroh
Ответ на:
комментарий
от KonishchevDmitry
Ответ на:
комментарий
от ShprotX
Ответ на:
комментарий
от KonishchevDmitry
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум вопрос по программированию gtk+ (2003)
- Форум Вывод значение в многоколлоный список (GTK) (2008)
- Форум TreeModel (2011)
- Форум [gtk] диалог сохранения файлов и confirm-overwrite (2010)
- Форум Проблема при использовании GTK+ под Windows (2018)
- Форум В продолжении gtk+-2.0 (2003)
- Форум gtk_message_dialog: некорректное закрытие (2013)
- Форум GtkTreeView (2006)
- Форум Как сделать меню 3-его уровня используя библиотеку Gtk+ (2014)
- Форум GTK: создание нового окна в новом потоке (2007)