Fix bug #6020: Reverse DVI/PDF search fails with child documents.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30214 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Enrico Forestieri 2009-06-22 05:09:01 +00:00
parent e31e71a7a9
commit d4f00122eb

View File

@ -327,9 +327,26 @@ Buffer * BufferList::getBufferFromTmp(string const & s)
{
BufferStorage::iterator it = bstore.begin();
BufferStorage::iterator end = bstore.end();
for (; it < end; ++it)
if (prefixIs(s, (*it)->temppath()))
return *it;
for (; it < end; ++it) {
if (prefixIs(s, (*it)->temppath())) {
// check whether the filename matches the master
string const master_name = changeExtension(onlyFilename(
(*it)->absFileName()), ".tex");
if (suffixIs(s, master_name))
return *it;
// if not, try with the children
vector<Buffer *> clist = (*it)->getChildren();
vector<Buffer *>::const_iterator cit = clist.begin();
vector<Buffer *>::const_iterator cend = clist.end();
for (; cit < cend; ++cit) {
string const mangled_child_name = DocFileName(
changeExtension((*cit)->absFileName(),
".tex")).mangledFilename();
if (suffixIs(s, mangled_child_name))
return *cit;
}
}
}
return 0;
}