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 | |
| 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
| -rw-r--r-- | src/inkscape.cpp | 19 | ||||
| -rw-r--r-- | src/io/file.cpp | 2 | ||||
| -rw-r--r-- | src/ui/dialog/selectorsdialog.cpp | 2 | ||||
| -rw-r--r-- | src/ui/dialog/styledialog.cpp | 2 |
4 files changed, 11 insertions, 14 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 ); } } diff --git a/src/io/file.cpp b/src/io/file.cpp index a23ef8fbc..a87453d47 100644 --- a/src/io/file.cpp +++ b/src/io/file.cpp @@ -65,7 +65,6 @@ ink_file_open(const Glib::ustring& data) SPRoot *root = doc->getRoot(); root->original.inkscape = root->version.inkscape; root->original.svg = root->version.svg; - INKSCAPE.readStyleSheets(); } return doc; @@ -116,7 +115,6 @@ ink_file_open(const Glib::RefPtr<Gio::File>& file, bool &cancelled) SPRoot *root = doc->getRoot(); root->original.inkscape = root->version.inkscape; root->original.svg = root->version.svg; - INKSCAPE.readStyleSheets(); } return doc; diff --git a/src/ui/dialog/selectorsdialog.cpp b/src/ui/dialog/selectorsdialog.cpp index dfa3f3aeb..afe895e6a 100644 --- a/src/ui/dialog/selectorsdialog.cpp +++ b/src/ui/dialog/selectorsdialog.cpp @@ -20,8 +20,6 @@ #include "selection.h" #include "style.h" #include "verbs.h" -#include "object/sp-style-elem.h" -#include "object/sp-root.h" #include "ui/icon-loader.h" #include "ui/widget/iconrenderer.h" diff --git a/src/ui/dialog/styledialog.cpp b/src/ui/dialog/styledialog.cpp index 2b95d0fc3..d3fc4d203 100644 --- a/src/ui/dialog/styledialog.cpp +++ b/src/ui/dialog/styledialog.cpp @@ -23,8 +23,6 @@ #include "style-internal.h" #include "style.h" #include "svg/svg-color.h" -#include "object/sp-style-elem.h" -#include "object/sp-root.h" #include "ui/icon-loader.h" #include "ui/widget/iconrenderer.h" #include "verbs.h" |
