diff -r 11f3bb408051 -r 62921b370c60 ui/gtk/tree.c --- a/ui/gtk/tree.c Wed Nov 22 12:59:13 2017 +0100 +++ b/ui/gtk/tree.c Sun Jan 21 12:13:09 2018 +0100 @@ -368,10 +368,19 @@ UiListView *view = list->obj; UiListModel *model = ui_list_model_new(view->obj, view->var, view->model); gtk_tree_view_set_model(GTK_TREE_VIEW(view->widget), GTK_TREE_MODEL(model)); + g_object_unref(G_OBJECT(model)); // TODO: free old model } void ui_listview_destroy(GtkWidget *w, UiListView *v) { + gtk_tree_view_set_model(GTK_TREE_VIEW(w), NULL); + ui_destroy_boundvar(v->obj->ctx, v->var); + // TODO: destroy model? + free(v); +} + +void ui_combobox_destroy(GtkWidget *w, UiListView *v) { + gtk_combo_box_set_model(GTK_COMBO_BOX(w), NULL); ui_destroy_boundvar(v->obj->ctx, v->var); // TODO: destroy model? free(v); @@ -498,7 +507,7 @@ g_signal_connect( combobox, "destroy", - G_CALLBACK(ui_listview_destroy), + G_CALLBACK(ui_combobox_destroy), uicbox); // bind var