From 9237d307a14e6a623db9451a8b132a8fcd14e2ef Mon Sep 17 00:00:00 2001 From: John Smith Date: Wed, 13 Jun 2012 11:25:03 +0900 Subject: Fix for 1011726 : Performance regression with XML Editor - Improve model unload time (bzr r11495) --- src/widgets/sp-xmlview-tree.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/sp-xmlview-tree.cpp b/src/widgets/sp-xmlview-tree.cpp index 0618296f5..11e6717c1 100644 --- a/src/widgets/sp-xmlview-tree.cpp +++ b/src/widgets/sp-xmlview-tree.cpp @@ -666,7 +666,17 @@ sp_xmlview_tree_set_repr (SPXMLViewTree * tree, Inkscape::XML::Node * repr) { if ( tree->repr == repr ) return; if (tree->repr) { - gtk_tree_store_clear(tree->store); + /* + * Would like to simple call gtk_tree_store_clear here, + * but it is extremely slow on large data sets. + * Instead just unref the old and create a new store. + */ + //gtk_tree_store_clear(tree->store); + gtk_tree_view_set_model(GTK_TREE_VIEW(tree), NULL); + g_object_unref(tree->store); + tree->store = gtk_tree_store_new (STORE_N_COLS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER); + gtk_tree_view_set_model (GTK_TREE_VIEW(tree), GTK_TREE_MODEL(tree->store)); + Inkscape::GC::release(tree->repr); } tree->repr = repr; -- cgit v1.2.3