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;
// 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 "
setParams(p);
}
-void InsetInclude::updateLabels(ParIterator const & it, UpdateType utype)
+void InsetInclude::updateBuffer(ParIterator const & it, UpdateType utype)
{
Buffer const * const childbuffer = getChildBuffer();
if (childbuffer) {
- childbuffer->updateLabels(Buffer::UpdateChildOnly, utype);
+ childbuffer->updateBuffer(Buffer::UpdateChildOnly, utype);
return;
}
if (!isListings(params()))
return;
if (label_)
- label_->updateLabels(it, utype);
+ label_->updateBuffer(it, utype);
InsetListingsParams const par(to_utf8(params()["lstparams"]));
if (par.getParamValue("caption").empty()) {