X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetInclude.cpp;h=62804ffd167e48adbcae7999af6e462fc8e70584;hb=700c3dc0ef81de871787a698a0949fb7c26444ca;hp=e23903005a46fb18f58f06472caee7d01035066e;hpb=61b2bd5e7fd9399128342d9048aa814ae5f086fc;p=lyx.git diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index e23903005a..62804ffd16 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -187,6 +187,8 @@ InsetInclude::InsetInclude(InsetInclude const & other) InsetInclude::~InsetInclude() { + if (isBufferLoaded()) + buffer_->invalidateBibfileCache(); delete label_; } @@ -235,7 +237,7 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd) } case LFUN_INSET_MODIFY: { - // It should be OK just to invalidate the cache is setParams() + // It should be OK just to invalidate the cache in setParams() // If not.... // child_buffer_ = 0; InsetCommandParams p(INCLUDE_CODE); @@ -274,8 +276,9 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd) } } setParams(p); + cur.forceBufferUpdate(); } else - cur.noUpdate(); + cur.noScreenUpdate(); break; } @@ -337,7 +340,7 @@ void InsetInclude::setParams(InsetCommandParams const & p) if (type(params()) == INPUT) add_preview(*preview_, *this, buffer()); - buffer().updateBibfilesCache(); + buffer().invalidateBibfileCache(); } @@ -520,13 +523,13 @@ int InsetInclude::latex(odocstream & os, OutputParams const & runparams) const //in a comment or doing a dryrun } else if (isInputOrInclude(params()) && isLyXFileName(included_file.absFileName())) { - //if it's a LyX file and we're inputting or including, - //try to load it so we can write the associated latex - if (!loadIfNeeded()) + // if it's a LyX file and we're inputting or including, + // try to load it so we can write the associated latex + + Buffer * tmp = loadIfNeeded(); + if (!tmp) return false; - Buffer * tmp = theBufferList().getBuffer(included_file); - if (tmp->params().baseClass() != masterBuffer->params().baseClass()) { // FIXME UNICODE docstring text = bformat(_("Included file `%1$s'\n" @@ -747,9 +750,8 @@ int InsetInclude::docbook(odocstream & os, OutputParams const & runparams) const string const exportfile = changeExtension(incfile, ".sgml"); DocFileName writefile(changeExtension(included_file, ".sgml")); - if (loadIfNeeded()) { - Buffer * tmp = theBufferList().getBuffer(FileName(included_file)); - + Buffer * tmp = loadIfNeeded(); + if (tmp) { string const mangled = writefile.mangledFileName(); writefile = makeAbsPath(mangled, buffer().masterBuffer()->temppath()); @@ -810,9 +812,9 @@ void InsetInclude::validate(LaTeXFeatures & features) const // Here we must do the fun stuff... // Load the file in the include if it needs // to be loaded: - if (loadIfNeeded()) { - // a file got loaded - Buffer * const tmp = theBufferList().getBuffer(FileName(included_file)); + Buffer * const tmp = loadIfNeeded(); + if (tmp) { + // the file is loaded // make sure the buffer isn't us // FIXME RECURSIVE INCLUDES // This is not sufficient, as recursive includes could be @@ -832,32 +834,10 @@ void InsetInclude::validate(LaTeXFeatures & features) const void InsetInclude::fillWithBibKeys(BiblioInfo & keys, InsetIterator const & /*di*/) const { - if (loadIfNeeded()) { - string const included_file = includedFileName(buffer(), params()).absFileName(); - Buffer * tmp = theBufferList().getBuffer(FileName(included_file)); - BiblioInfo const & newkeys = tmp->localBibInfo(); - keys.mergeBiblioInfo(newkeys); - } -} - - -void InsetInclude::updateBibfilesCache() -{ - Buffer const * const child = getChildBuffer(); - if (child) - child->updateBibfilesCache(Buffer::UpdateChildOnly); -} - - -support::FileNameList const & - InsetInclude::getBibfilesCache() const -{ - Buffer const * const child = getChildBuffer(); - if (child) - return child->getBibfilesCache(Buffer::UpdateChildOnly); - - static support::FileNameList const empty; - return empty; + Buffer * child = loadIfNeeded(); + if (!child) + return; + child->fillWithBibKeys(keys); }