]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Limit the nopassthurchars case in beamer to URL
[lyx.git] / src / Buffer.cpp
index 29dfe4bfe233e877170399bda5343dab7c3728ef..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.");
@@ -4208,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
@@ -5559,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");