diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp
index 55b6782939a6465124d6bebbe9ba70f2c65cd04e..64ff38019d381b915b2f64cc952454be6110c450 100644 (file)
--- a/src/sp-mask.cpp
+++ b/src/sp-mask.cpp
sp_mask_write (SPObject *object, Inkscape::XML::Node *repr, guint flags)
{
if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
- repr = sp_repr_new ("svg:mask");
+ Inkscape::XML::Document *xml_doc = sp_document_repr_doc(SP_OBJECT_DOCUMENT(object));
+ repr = xml_doc->createElement("svg:mask");
}
if (((SPObjectClass *) (parent_class))->write)
@@ -273,7 +274,8 @@ sp_mask_create (GSList *reprs, SPDocument *document, NR::Matrix const* applyTran
{
Inkscape::XML::Node *defsrepr = SP_OBJECT_REPR (SP_DOCUMENT_DEFS (document));
- Inkscape::XML::Node *repr = sp_repr_new ("svg:mask");
+ Inkscape::XML::Document *xml_doc = sp_document_repr_doc(document);
+ Inkscape::XML::Node *repr = xml_doc->createElement("svg:mask");
repr->setAttribute("maskUnits", "userSpaceOnUse");
defsrepr->appendChild(repr);
@@ -290,6 +292,9 @@ sp_mask_create (GSList *reprs, SPDocument *document, NR::Matrix const* applyTran
sp_item_write_transform(item, SP_OBJECT_REPR(item), transform);
}
}
+
+ if (repr != defsrepr->lastChild())
+ defsrepr->changeOrder(repr, defsrepr->lastChild()); // workaround for bug 989084
Inkscape::GC::release(repr);
return mask_id;