diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp
index d713a518b2f996740017c08d6ab08633d67d7539..fa756242cab2dc53ba362d438b608dcd509241c0 100644 (file)
--- a/src/sp-style-elem.cpp
+++ b/src/sp-style-elem.cpp
#include "document.h"
#include "sp-style-elem.h"
#include "attributes.h"
+#include "style.h"
using Inkscape::XML::TEXT_NODE;
static void sp_style_elem_init(SPStyleElem *style_elem);
}
cr_parser_destroy(parser);
//object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
+
+ // Style references via class= do not, and actually cannot, use autoupdating URIReferences.
+ // Therefore, if an object refers to a stylesheet which has not yet loaded when the object is being loaded
+ // (e.g. if the stylesheet is below or inside the object in XML), its class= has no effect (bug 1491639).
+ // Below is a partial hack that fixes this for a single case: when the <style> is a child of the object
+ // that uses a style from it. It just forces the parent of <style> to reread its style as soon as the stylesheet
+ // is fully loaded. Naturally, this won't work if the user of the stylesheet is its grandparent or precedent.
+ SPObject *parent = SP_OBJECT_PARENT (object);
+ if ( parent ) {
+ sp_style_read_from_object(parent->style, parent);
+ }
}
/**