diff options
| author | Jabiertxof <jabier.arraiza@marker.es> | 2019-06-19 15:23:25 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-07-08 21:04:13 +0000 |
| commit | 58e6bbaef9e8c8cdf1118266175755fcbf1bc063 (patch) | |
| tree | 7a243b08862744ec38b2cc9fa453acd6e106a41a /src/inkscape.cpp | |
| parent | improve speed not reloading root if only one style tag (diff) | |
| download | inkscape-58e6bbaef9e8c8cdf1118266175755fcbf1bc063.tar.gz inkscape-58e6bbaef9e8c8cdf1118266175755fcbf1bc063.zip | |
Allow good render of multiples stylesheets
Diffstat (limited to 'src/inkscape.cpp')
| -rw-r--r-- | src/inkscape.cpp | 19 |
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 ); } } |
