]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Limit the nopassthurchars case in beamer to URL
[lyx.git] / src / Buffer.cpp
index 3d3bb538e545ff5d54255e78087f260abf43ed8e..6dea0a44e7eaca38a45d0b75e8609698876232d0 100644 (file)
@@ -41,7 +41,6 @@
 #include "LaTeXFeatures.h"
 #include "LaTeX.h"
 #include "Layout.h"
-#include "Lexer.h"
 #include "LyXAction.h"
 #include "LyX.h"
 #include "LyXRC.h"
@@ -95,6 +94,7 @@
 #include "support/filetools.h"
 #include "support/gettext.h"
 #include "support/gzstream.h"
+#include "support/Lexer.h"
 #include "support/lstrings.h"
 #include "support/mutex.h"
 #include "support/os.h"
@@ -1882,7 +1882,8 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os,
        // This is only set once per document (in master)
        if (!runparams.is_child) {
                runparams.use_polyglossia = features.usePolyglossia();
-               runparams.use_hyperref = features.isRequired("hyperref");
+               runparams.use_hyperref = features.isRequired("hyperref")
+                               || features.isProvided("hyperref");
                runparams.use_CJK = features.mustProvide("CJK");
        }
        LYXERR(Debug::OUTFILE, "  Buffer validation done.");
@@ -2434,7 +2435,7 @@ void Buffer::getLabelList(vector<std::tuple<docstring, docstring, docstring>> &
        shared_ptr<Toc> toc = d->toc_backend.toc("label");
        for (auto const & tocit : *toc) {
                if (tocit.depth() == 0) {
-                       list.push_back(make_tuple(tocit.str(), tocit.asString(),tocit.prettyStr()));
+                       list.push_back(make_tuple(tocit.str(), tocit.asString(), tocit.prettyStr()));
                }
        }
 }
@@ -2444,7 +2445,7 @@ void Buffer::invalidateBibinfoCache() const
 {
        d->bibinfo_cache_valid_ = false;
        d->cite_labels_valid_ = false;
-       removeBiblioTempFiles();
+       scheduleBiblioTempRemoval();
        // also invalidate the cache for the parent buffer
        Buffer const * const pbuf = d->parent();
        if (pbuf)
@@ -2702,6 +2703,7 @@ void Buffer::removeBiblioTempFiles() const
        Buffer const * const pbuf = parent();
        if (pbuf)
                pbuf->removeBiblioTempFiles();
+       removeBiblioTemps = false;
 }
 
 
@@ -4207,7 +4209,8 @@ unique_ptr<TexRow> Buffer::getSourceCode(odocstream & os, string const & format,
                        validate(features);
                        runparams.use_polyglossia = features.usePolyglossia();
                        runparams.use_babel = features.useBabel();
-                       runparams.use_hyperref = features.isRequired("hyperref");
+                       runparams.use_hyperref = features.isRequired("hyperref")
+                               || features.isProvided("hyperref");
                        // latex or literate
                        otexstream ots(os);
                        // output above
@@ -4475,6 +4478,8 @@ void Buffer::setMathFlavor(OutputParams & op) const
 Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir,
        bool includeall, string & result_file) const
 {
+       if (removeBiblioTemps)
+               removeBiblioTempFiles();
        LYXERR(Debug::FILES, "target=" << target);
        OutputParams runparams(&params().encoding());
        string format = target;
@@ -5342,6 +5347,10 @@ void Buffer::Impl::setLabel(ParIterator & it, UpdateType utype) const
 
 void Buffer::updateBuffer(ParIterator & parit, UpdateType utype, bool const deleted) const
 {
+       // if fomatted references are shown in workarea update buffer accordingly
+       if (params().use_formatted_ref)
+               utype = OutputUpdate;
+
        pushIncludedBuffer(this);
        // LASSERT: Is it safe to continue here, or should we just return?
        LASSERT(parit.pit() == 0, /**/);
@@ -5552,19 +5561,28 @@ Buffer::ReadStatus Buffer::reload()
        docstring const disp_fn = makeDisplayPath(d->filename.absFileName());
 
        // clear parent. this will get reset if need be.
+       Buffer const * oldparent = d->parent();
        d->setParent(nullptr);
        ReadStatus const status = loadLyXFile();
+       // The inset members in cursors held by buffer views are now wrong.
+       workAreaManager().sanitizeCursors();
+       setBusy(false);
        if (status == ReadSuccess) {
                updateBuffer();
                changed(true);
                updateTitles();
+               // reset parent if this hasn't been done yet
+               // but only if this is still its child (e.g.,
+               // not after the former child has been saved as...) 
+               if (!d->parent() && oldparent && oldparent->isFullyLoaded()
+                   && oldparent->isChild(this))
+                       d->setParent(oldparent);
                markClean();
                message(bformat(_("Document %1$s reloaded."), disp_fn));
                d->undo_.clear();
        } else {
                message(bformat(_("Could not reload document %1$s."), disp_fn));
        }
-       setBusy(false);
        removePreviews();
        updatePreviews();
        errors("Parse");