mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-23 05:25:26 +00:00
Prevent automatic opening of child docs because of natbib labels
* src/insets/insetinclude.h (updateBibfilesCache): adjust comment (getBibfilesCache): ditto * src/insets/insetinclude.C (getChildBuffer): new, return the buffer of the child if it exists (updateBibfilesCache): update the child buffer only if already loaded (getBibfilesCache): scan the child buffer only if already loaded * src/buffer.h (updateBibfilesCache): adjust comment (getBibfilesCache): ditto (bibfilesCache_): ditto git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13869 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
00b9544ddc
commit
ff4b3ba8fc
@ -255,10 +255,10 @@ public:
|
||||
/// return all bibkeys from buffer and its childs
|
||||
void fillWithBibKeys(std::vector<std::pair<std::string, std::string> > & keys) const;
|
||||
/// Update the cache with all bibfiles in use (including bibfiles
|
||||
/// of child documents).
|
||||
/// of loaded child documents).
|
||||
void updateBibfilesCache();
|
||||
/// Return the cache with all bibfiles in use (including bibfiles
|
||||
/// of child documents).
|
||||
/// of loaded child documents).
|
||||
std::vector<std::string> const & getBibfilesCache() const;
|
||||
///
|
||||
void getLabelList(std::vector<std::string> &) const;
|
||||
@ -365,8 +365,8 @@ private:
|
||||
/// it's BufferView, this should be FIXED in future.
|
||||
StableDocIterator cursor_;
|
||||
StableDocIterator anchor_;
|
||||
/// A cache for the bibfiles (including bibfiles of child documents),
|
||||
/// needed for appropriate update of natbib labels.
|
||||
/// A cache for the bibfiles (including bibfiles of loaded child
|
||||
/// documents), needed for appropriate update of natbib labels.
|
||||
std::vector<std::string> bibfilesCache_;
|
||||
};
|
||||
|
||||
|
@ -301,6 +301,20 @@ string const InsetInclude::getScreenLabel(Buffer const &) const
|
||||
|
||||
namespace {
|
||||
|
||||
/// return the child buffer if the file is a LyX doc and is loaded
|
||||
Buffer * getChildBuffer(Buffer const & buffer, InsetCommandParams const & params)
|
||||
{
|
||||
if (isVerbatim(params))
|
||||
return 0;
|
||||
|
||||
string const included_file = includedFilename(buffer, params);
|
||||
if (!isLyXFilename(included_file))
|
||||
return 0;
|
||||
|
||||
return bufferlist.getBuffer(included_file);
|
||||
}
|
||||
|
||||
|
||||
/// return true if the file is or got loaded.
|
||||
bool loadIfNeeded(Buffer const & buffer, InsetCommandParams const & params)
|
||||
{
|
||||
@ -616,9 +630,8 @@ void InsetInclude::fillWithBibKeys(Buffer const & buffer,
|
||||
|
||||
void InsetInclude::updateBibfilesCache(Buffer const & buffer)
|
||||
{
|
||||
if (loadIfNeeded(buffer, params_)) {
|
||||
string const included_file = includedFilename(buffer, params_);
|
||||
Buffer * tmp = bufferlist.getBuffer(included_file);
|
||||
Buffer * const tmp = getChildBuffer(buffer, params_);
|
||||
if (tmp) {
|
||||
tmp->setParentName("");
|
||||
tmp->updateBibfilesCache();
|
||||
tmp->setParentName(parentFilename(buffer));
|
||||
@ -629,9 +642,8 @@ void InsetInclude::updateBibfilesCache(Buffer const & buffer)
|
||||
std::vector<string> const &
|
||||
InsetInclude::getBibfilesCache(Buffer const & buffer) const
|
||||
{
|
||||
if (loadIfNeeded(buffer, params_)) {
|
||||
string const included_file = includedFilename(buffer, params_);
|
||||
Buffer * tmp = bufferlist.getBuffer(included_file);
|
||||
Buffer * const tmp = getChildBuffer(buffer, params_);
|
||||
if (tmp) {
|
||||
tmp->setParentName("");
|
||||
std::vector<string> const & cache = tmp->getBibfilesCache();
|
||||
tmp->setParentName(parentFilename(buffer));
|
||||
|
@ -56,11 +56,14 @@ public:
|
||||
std::vector<std::pair<std::string,std::string> > & keys) const;
|
||||
/** Update the cache with all bibfiles in use of the child buffer
|
||||
* (including bibfiles of grandchild documents).
|
||||
* Does nothing if the child document is not loaded to prevent
|
||||
* automatic loading of all child documents upon loading the master.
|
||||
* \param buffer the Buffer containing this inset.
|
||||
*/
|
||||
void updateBibfilesCache(Buffer const & buffer);
|
||||
/** Return the cache with all bibfiles in use of the child buffer
|
||||
* (including bibfiles of grandchild documents).
|
||||
* Return an empty vector if the child doc is not loaded.
|
||||
* \param buffer the Buffer containing this inset.
|
||||
*/
|
||||
std::vector<std::string> const &
|
||||
|
Loading…
Reference in New Issue
Block a user