summaryrefslogtreecommitdiffstats
path: root/src/inkscape.cpp
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2019-06-19 15:23:25 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-07-08 21:04:13 +0000
commit58e6bbaef9e8c8cdf1118266175755fcbf1bc063 (patch)
tree7a243b08862744ec38b2cc9fa453acd6e106a41a /src/inkscape.cpp
parentimprove speed not reloading root if only one style tag (diff)
downloadinkscape-58e6bbaef9e8c8cdf1118266175755fcbf1bc063.tar.gz
inkscape-58e6bbaef9e8c8cdf1118266175755fcbf1bc063.zip
Allow good render of multiples stylesheets
Diffstat (limited to 'src/inkscape.cpp')
-rw-r--r--src/inkscape.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/inkscape.cpp b/src/inkscape.cpp
index 205707340..c93e734e6 100644
--- a/src/inkscape.cpp
+++ b/src/inkscape.cpp
@@ -59,6 +59,9 @@
#include "svg/svg-color.h"
+#include "object/sp-style-elem.h"
+#include "object/sp-root.h"
+
#include "ui/dialog/debug.h"
#include "ui/tools/tool-base.h"
@@ -678,7 +681,6 @@ Application::add_gtk_css()
void Application::readStyleSheets(bool forceupd)
{
SPDocument *document = SP_ACTIVE_DOCUMENT;
- document->setStyleSheet(nullptr);
Inkscape::XML::Node *root = document->getReprRoot();
std::vector <Inkscape::XML::Node *> styles;
for (unsigned i = 0; i < root->childCount(); ++i) {
@@ -687,14 +689,15 @@ void Application::readStyleSheets(bool forceupd)
styles.insert(styles.begin(),child);
}
}
- for (auto style : styles) {
- gchar const * id = style->attribute("id");
- if (id) {
- SPStyleElem *styleelem = dynamic_cast<SPStyleElem *>(document->getObjectById(id));
- styleelem->read_content();
+ if (forceupd || styles.size() > 1) {
+ document->setStyleSheet(nullptr);
+ for (auto style : styles) {
+ gchar const * id = style->attribute("id");
+ if (id) {
+ SPStyleElem *styleelem = dynamic_cast<SPStyleElem *>(document->getObjectById(id));
+ styleelem->read_content();
+ }
}
- }
- if (forceupd || styles.size > 1) {
document->getRoot()->emitModified( SP_OBJECT_MODIFIED_CASCADE );
}
}