summaryrefslogtreecommitdiffstats
path: root/src/sp-object-repr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp-object-repr.cpp')
-rw-r--r--src/sp-object-repr.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp
index 62143e3ab..e32819746 100644
--- a/src/sp-object-repr.cpp
+++ b/src/sp-object-repr.cpp
@@ -91,9 +91,9 @@ static unsigned const N_NAME_TYPES = SODIPODI_TYPE + 1;
static GType name_to_gtype(NameType name_type, gchar const *name);
/**
- * Construct an SPRoot and all its descendents from the given repr.
+ * Construct an SPRoot and all its descendents from the given XML representation.
*/
-SPObject *
+void
sp_object_repr_build_tree(SPDocument *document, Inkscape::XML::Node *repr)
{
g_assert(document != NULL);
@@ -103,13 +103,14 @@ sp_object_repr_build_tree(SPDocument *document, Inkscape::XML::Node *repr)
g_assert(name != NULL);
GType const type = name_to_gtype(REPR_NAME, name);
g_assert(g_type_is_a(type, SP_TYPE_ROOT));
- gpointer newobj = g_object_new(type, 0);
- g_assert(newobj != NULL);
- SPObject *const object = SP_OBJECT(newobj);
- g_assert(object != NULL);
- sp_object_invoke_build(object, document, repr, FALSE);
- return object;
+ // create and assign root
+ SPObject *root = SP_OBJECT(g_object_new(type, 0));
+ g_assert(root != NULL);
+ document->root = root;
+
+ // recursively create SP tree elements
+ sp_object_invoke_build(root, document, repr, FALSE);
}
GType