]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetInclude.cpp
Pure HTML output for math macros.
[lyx.git] / src / insets / InsetInclude.cpp
index ccd0dda6ac97c6b0251e92c265609d6011c319e9..777d28e701700c5a503611385b5bbe991c7ee048 100644 (file)
@@ -402,28 +402,27 @@ Buffer * InsetInclude::getChildBuffer() const
 
 Buffer * InsetInclude::loadIfNeeded() const
 {
-       // This is for background export and preview. We don't want to load the
-       // cloned child document again.
-       if (child_buffer_ && theBufferList().isLoaded(child_buffer_)
-                 && child_buffer_->isClone())
+       // This is for background export and preview. We don't even want to
+       // try to load the cloned child document again.
+       if (buffer().isClone())
                return child_buffer_;
-
+       
        // Don't try to load it again if we failed before.
        if (failedtoload_ || isVerbatim(params()) || isListings(params()))
                return 0;
 
+       FileName const included_file = includedFilename(buffer(), params());
        // Use cached Buffer if possible.
        if (child_buffer_ != 0) {
-               if (theBufferList().isLoaded(child_buffer_))
+               if (theBufferList().isLoaded(child_buffer_)
+               // additional sanity check: make sure the Buffer really is
+                   // associated with the file we want.
+                   && child_buffer_ == theBufferList().getBuffer(included_file))
                        return child_buffer_;
                // Buffer vanished, so invalidate cache and try to reload.
                child_buffer_ = 0;
        }
 
-       string const parent_filename = buffer().absFileName();
-       FileName const included_file = 
-               makeAbsPath(to_utf8(params()["filename"]), onlyPath(parent_filename));
-
        if (!isLyXFilename(included_file.absFilename()))
                return 0;
 
@@ -679,9 +678,7 @@ docstring InsetInclude::xhtml(XHTMLStream & xs, OutputParams const &rp) const
        // We don't (yet) know how to Input or Include non-LyX files.
        // (If we wanted to get really arcane, we could run some tex2html
        // converter on the included file. But that's just masochistic.)
-       string const parent_filename = buffer().absFileName();
-       FileName const included_file = 
-               makeAbsPath(to_utf8(params()["filename"]), onlyPath(parent_filename));
+       FileName const included_file = includedFilename(buffer(), params());
        if (!isLyXFilename(included_file.absFilename())) {
                frontend::Alert::warning(_("Unsupported Inclusion"),
                                         bformat(_("LyX does not know how to include non-LyX files when "