Господа... :)
Столкнулся с довольно неприятной проблемой. Суть ее сводится к тому, что
если в обработчике сигнала "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)
- Форум GTK+ / как изменить атрибуты текстовых элементов GtkListStore? (2004)
- Форум TreeModel (2011)
- Форум [gtk] диалог сохранения файлов и confirm-overwrite (2010)
- Форум GtkTreeView (2006)
- Форум Проблема при использовании GTK+ под Windows (2018)
- Форум В продолжении gtk+-2.0 (2003)
- Форум gtk_message_dialog: некорректное закрытие (2013)
- Форум GTK Windows русские буквы (2007)