X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetInfo.cpp;h=46d656c817c9ad9d78a221f321867717e368c566;hb=eb294eadb5e7f22880da399ae082f74567bbfc4e;hp=61b39adc12719e826b90f107d171f3a714cc05e9;hpb=10f4f2113aa7ed45af7b6aca50e76d4bf9772732;p=lyx.git diff --git a/src/insets/InsetInfo.cpp b/src/insets/InsetInfo.cpp index 61b39adc12..46d656c817 100644 --- a/src/insets/InsetInfo.cpp +++ b/src/insets/InsetInfo.cpp @@ -38,6 +38,7 @@ #include "frontends/Application.h" +#include "support/Changer.h" #include "support/convert.h" #include "support/debug.h" #include "support/docstream.h" @@ -158,6 +159,8 @@ set getTexFileList(string const & filename) getVectorFromString(file.fileContents("UTF-8"), from_ascii("\n")); // Normalise paths like /foo//bar ==> /foo/bar + // No "auto const &" because doc is modified later + // coverity[auto_causes_copy] for (auto doc : doclist) { doc = subst(doc, from_ascii("\r"), docstring()); while (contains(doc, from_ascii("//"))) @@ -772,7 +775,22 @@ bool InsetInfo::forceLocalFontSwitch() const } -void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted) { +void InsetInfo::metrics(MetricsInfo & mi, Dimension & dim) const +{ + const_cast(this)->build(); + InsetCollapsible::metrics(mi, dim); +} + + +void InsetInfo::draw(PainterInfo & pi, int x, int y) const +{ + Changer chg = changeVar(lyxrc.mark_foreign_language, false); + InsetCollapsible::draw(pi, x, y); +} + +void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted) + +{ // If the Buffer is a clone, then we neither need nor want to do any // of what follows. We want, rather, just to inherit how things were // in the original Buffer. This is especially important for VCS. @@ -780,9 +798,22 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool cons // than in the Buffer we were exporting. if (buffer().isClone()) return; - BufferParams const & bp = buffer().params(); params_.lang = it.paragraph().getFontSettings(bp, it.pos()).language(); + InsetCollapsible::updateBuffer(it, utype, deleted); +} + + +void InsetInfo::build() +{ + // If the Buffer is a clone, then we neither need nor want to do any + // of what follows. We want, rather, just to inherit how things were + // in the original Buffer. This is especially important for VCS. + // Otherwise, we could in principle have different settings here + // than in the Buffer we were exporting. + if (buffer().isClone()) + return; + Language const * tryguilang = languages.getFromCode(Messages::guiLanguage()); // Some info insets use the language of the GUI (if available) Language const * guilang = tryguilang ? tryguilang : params_.lang; @@ -955,7 +986,19 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool cons if (initialized_) break; // check in packages.lst - if (LaTeXFeatures::isAvailable(params_.name)) { + bool available; + // we also allow version check with version separated by blank + if (contains(params_.name, ' ')) { + string name; + string const version = split(params_.name, name, ' '); + int const y = convert(version.substr(0,4)); + int const m = convert(version.substr(4,2)); + int const d = convert(version.substr(6,2)); + available = LaTeXFeatures::isAvailableAtLeastFrom(name, y, m, d); + } else + available = LaTeXFeatures::isAvailable(params_.name); + + if (available) { gui = _("yes"); info(from_ascii("yes"), params_.lang); } else { @@ -1106,7 +1149,7 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool cons else if (params_.name == "path") setText(from_utf8(os::latex_path(buffer().filePath())), params_.lang); else if (params_.name == "class") - setText(from_utf8(bp.documentClass().name()), params_.lang); + setText(from_utf8(buffer().params().documentClass().name()), params_.lang); break; } case InsetInfoParams::VCS_INFO: { @@ -1194,7 +1237,13 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool cons // Just to do something with that string LYXERR(Debug::INFO, "info inset text: " << gui); - InsetCollapsible::updateBuffer(it, utype, deleted); +} + + +void InsetInfo::validate(LaTeXFeatures & features) const +{ + const_cast(this)->build(); + InsetCollapsible::validate(features); }