mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
Properly resolve crossref'ed data in BiblioInfo
This needs to take the mappings into account as well, not just plain fields.
This commit is contained in:
parent
1f48af5f55
commit
5b11066a37
@ -1137,15 +1137,6 @@ docstring BibTeXInfo::getValueForKey(string const & oldkey, Buffer const & buf,
|
||||
}
|
||||
|
||||
docstring ret = operator[](key);
|
||||
if (ret.empty() && !xrefs.empty()) {
|
||||
// xr is a (reference to a) BibTeXInfo const *
|
||||
for (auto const & xr : xrefs) {
|
||||
if (xr && !(*xr)[key].empty()) {
|
||||
ret = (*xr)[key];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ret.empty()) {
|
||||
// some special keys
|
||||
// FIXME: dialog, textbefore and textafter have nothing to do with this
|
||||
@ -1283,6 +1274,21 @@ docstring BibTeXInfo::getValueForKey(string const & oldkey, Buffer const & buf,
|
||||
ret = getYear();
|
||||
}
|
||||
|
||||
// If we have no result, check in the cross-ref'ed entries
|
||||
if (ret.empty() && !xrefs.empty()) {
|
||||
// xr is a (reference to a) BibTeXInfo const *
|
||||
for (auto const & xr : xrefs) {
|
||||
if (!xr)
|
||||
continue;
|
||||
// use empty BibTeXInfoList to avoid loops
|
||||
BibTeXInfoList xr_dummy;
|
||||
ret = xr->getValueForKey(oldkey, buf, ci, xr_dummy, maxsize);
|
||||
if (!ret.empty())
|
||||
// success!
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (cleanit)
|
||||
ret = xml::cleanAttr(ret);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user