mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-02 05:55:38 +00:00
Fix bug #9131 for stable branch. The real problem lies
elsewhere, but it will require major surgery and, more importantly, a file format change.
This commit is contained in:
parent
5df89e5006
commit
b128f3de14
@ -636,7 +636,8 @@ docstring const & BibTeXInfo::getInfo(BibTeXInfo const * const xref,
|
|||||||
|
|
||||||
docstring const BibTeXInfo::getLabel(BibTeXInfo const * const xref,
|
docstring const BibTeXInfo::getLabel(BibTeXInfo const * const xref,
|
||||||
Buffer const & buf, docstring const & format, bool richtext,
|
Buffer const & buf, docstring const & format, bool richtext,
|
||||||
docstring before, docstring after, docstring dialog, bool next) const
|
docstring const & before, docstring const & after,
|
||||||
|
docstring const & dialog, bool next) const
|
||||||
{
|
{
|
||||||
docstring loclabel;
|
docstring loclabel;
|
||||||
|
|
||||||
@ -872,10 +873,19 @@ docstring const BiblioInfo::getInfo(docstring const & key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
docstring const BiblioInfo::getLabel(vector<docstring> const & keys,
|
docstring const BiblioInfo::getLabel(vector<docstring> keys,
|
||||||
Buffer const & buf, string const & style, bool richtext,
|
Buffer const & buf, string const & style, bool for_xhtml,
|
||||||
docstring const & before, docstring const & after, docstring const & dialog) const
|
size_t max_size, docstring const & before, docstring const & after,
|
||||||
|
docstring const & dialog) const
|
||||||
{
|
{
|
||||||
|
// shorter makes no sense
|
||||||
|
LASSERT(max_size >= 16, max_size = 16);
|
||||||
|
|
||||||
|
// we can't display more than 10 of these, anyway
|
||||||
|
bool const too_many_keys = keys.size() > 10;
|
||||||
|
if (too_many_keys)
|
||||||
|
keys.resize(10);
|
||||||
|
|
||||||
CiteEngineType const engine_type = buf.params().citeEngineType();
|
CiteEngineType const engine_type = buf.params().citeEngineType();
|
||||||
DocumentClass const & dc = buf.params().documentClass();
|
DocumentClass const & dc = buf.params().documentClass();
|
||||||
docstring const & format = from_utf8(dc.getCiteFormat(engine_type, style, "cite"));
|
docstring const & format = from_utf8(dc.getCiteFormat(engine_type, style, "cite"));
|
||||||
@ -897,8 +907,17 @@ docstring const BiblioInfo::getLabel(vector<docstring> const & keys,
|
|||||||
xrefptr = &(xrefit->second);
|
xrefptr = &(xrefit->second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = data.getLabel(xrefptr, buf, ret, richtext,
|
ret = data.getLabel(xrefptr, buf, ret, for_xhtml,
|
||||||
before, after, dialog, key+1 != ken);
|
before, after, dialog, key + 1 != ken);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret.size() > max_size) {
|
||||||
|
ret.resize(max_size - 3);
|
||||||
|
ret += "...";
|
||||||
|
} else if (too_many_keys) {
|
||||||
|
if (ret.size() > max_size - 3)
|
||||||
|
ret.resize(max_size - 3);
|
||||||
|
ret += "...";
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -915,8 +934,8 @@ bool BiblioInfo::isBibtex(docstring const & key) const
|
|||||||
|
|
||||||
vector<docstring> const BiblioInfo::getCiteStrings(
|
vector<docstring> const BiblioInfo::getCiteStrings(
|
||||||
vector<docstring> const & keys, vector<CitationStyle> const & styles,
|
vector<docstring> const & keys, vector<CitationStyle> const & styles,
|
||||||
Buffer const & buf, bool richtext, docstring const & before,
|
Buffer const & buf, docstring const & before,
|
||||||
docstring const & after, docstring const & dialog) const
|
docstring const & after, docstring const & dialog, size_t max_size) const
|
||||||
{
|
{
|
||||||
if (empty())
|
if (empty())
|
||||||
return vector<docstring>();
|
return vector<docstring>();
|
||||||
@ -925,7 +944,7 @@ vector<docstring> const BiblioInfo::getCiteStrings(
|
|||||||
vector<docstring> vec(styles.size());
|
vector<docstring> vec(styles.size());
|
||||||
for (size_t i = 0; i != vec.size(); ++i) {
|
for (size_t i = 0; i != vec.size(); ++i) {
|
||||||
style = styles[i].cmd;
|
style = styles[i].cmd;
|
||||||
vec[i] = getLabel(keys, buf, style, richtext, before, after, dialog);
|
vec[i] = getLabel(keys, buf, style, false, max_size, before, after, dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
return vec;
|
return vec;
|
||||||
|
@ -19,9 +19,9 @@
|
|||||||
|
|
||||||
#include "Citation.h"
|
#include "Citation.h"
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
namespace lyx {
|
namespace lyx {
|
||||||
@ -67,7 +67,8 @@ public:
|
|||||||
/// \return formatted BibTeX data for a citation label
|
/// \return formatted BibTeX data for a citation label
|
||||||
docstring const getLabel(BibTeXInfo const * const xref,
|
docstring const getLabel(BibTeXInfo const * const xref,
|
||||||
Buffer const & buf, docstring const & format, bool richtext,
|
Buffer const & buf, docstring const & format, bool richtext,
|
||||||
docstring before, docstring after, docstring dialog, bool next = false) const;
|
const docstring & before, const docstring & after,
|
||||||
|
const docstring & dialog, bool next = false) const;
|
||||||
///
|
///
|
||||||
const_iterator find(docstring const & f) const { return bimap_.find(f); }
|
const_iterator find(docstring const & f) const { return bimap_.find(f); }
|
||||||
///
|
///
|
||||||
@ -202,10 +203,9 @@ public:
|
|||||||
bool richtext = false) const;
|
bool richtext = false) const;
|
||||||
/// \return formatted BibTeX data for citation labels.
|
/// \return formatted BibTeX data for citation labels.
|
||||||
/// Citation labels can have more than one key.
|
/// Citation labels can have more than one key.
|
||||||
docstring const getLabel(std::vector<docstring> const & keys,
|
docstring const getLabel(std::vector<docstring> keys,
|
||||||
Buffer const & buf, std::string const & style, bool richtext = false,
|
Buffer const & buf, std::string const & style, bool for_xhtml,
|
||||||
docstring const & before = docstring(),
|
size_t max_size, docstring const & before, docstring const & after,
|
||||||
docstring const & after = docstring(),
|
|
||||||
docstring const & dialog = docstring()) const;
|
docstring const & dialog = docstring()) const;
|
||||||
/// Is this a reference from a bibtex database
|
/// Is this a reference from a bibtex database
|
||||||
/// or from a bibliography environment?
|
/// or from a bibliography environment?
|
||||||
@ -214,10 +214,9 @@ public:
|
|||||||
/// list of keys, using either numerical or author-year style depending
|
/// list of keys, using either numerical or author-year style depending
|
||||||
/// upon the active engine.
|
/// upon the active engine.
|
||||||
std::vector<docstring> const getCiteStrings(std::vector<docstring> const & keys,
|
std::vector<docstring> const getCiteStrings(std::vector<docstring> const & keys,
|
||||||
std::vector<CitationStyle> const & styles, Buffer const & buf, bool richtext = false,
|
std::vector<CitationStyle> const & styles, Buffer const & buf,
|
||||||
docstring const & before = docstring(),
|
docstring const & before, docstring const & after, docstring const & dialog,
|
||||||
docstring const & after = docstring(),
|
size_t max_size) const;
|
||||||
docstring const & dialog = docstring()) const;
|
|
||||||
/// Collects the cited entries from buf.
|
/// Collects the cited entries from buf.
|
||||||
void collectCitedEntries(Buffer const & buf);
|
void collectCitedEntries(Buffer const & buf);
|
||||||
/// A list of BibTeX keys cited in the current document, sorted by
|
/// A list of BibTeX keys cited in the current document, sorted by
|
||||||
|
@ -250,7 +250,8 @@ void GuiCitation::updateStyles(BiblioInfo const & bi)
|
|||||||
if (!selectedLV->selectionModel()->selectedIndexes().empty())
|
if (!selectedLV->selectionModel()->selectedIndexes().empty())
|
||||||
curr = selectedLV->selectionModel()->selectedIndexes()[0].row();
|
curr = selectedLV->selectionModel()->selectedIndexes()[0].row();
|
||||||
|
|
||||||
QStringList sty = citationStyles(bi);
|
static const size_t max_length = 80;
|
||||||
|
QStringList sty = citationStyles(bi, max_length);
|
||||||
|
|
||||||
if (sty.isEmpty()) {
|
if (sty.isEmpty()) {
|
||||||
// some error
|
// some error
|
||||||
@ -587,7 +588,7 @@ void GuiCitation::findKey(BiblioInfo const & bi,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QStringList GuiCitation::citationStyles(BiblioInfo const & bi)
|
QStringList GuiCitation::citationStyles(BiblioInfo const & bi, size_t max_size)
|
||||||
{
|
{
|
||||||
docstring const before = qstring_to_ucs4(textBeforeED->text());
|
docstring const before = qstring_to_ucs4(textBeforeED->text());
|
||||||
docstring const after = qstring_to_ucs4(textAfterED->text());
|
docstring const after = qstring_to_ucs4(textAfterED->text());
|
||||||
@ -595,7 +596,7 @@ QStringList GuiCitation::citationStyles(BiblioInfo const & bi)
|
|||||||
vector<CitationStyle> styles = citeStyles_;
|
vector<CitationStyle> styles = citeStyles_;
|
||||||
// FIXME: pass a dictionary instead of individual before, after, dialog, etc.
|
// FIXME: pass a dictionary instead of individual before, after, dialog, etc.
|
||||||
vector<docstring> ret = bi.getCiteStrings(keys, styles, documentBuffer(),
|
vector<docstring> ret = bi.getCiteStrings(keys, styles, documentBuffer(),
|
||||||
false, before, after, from_utf8("dialog"));
|
before, after, from_utf8("dialog"), max_size);
|
||||||
return to_qstring_list(ret);
|
return to_qstring_list(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ private:
|
|||||||
);
|
);
|
||||||
|
|
||||||
/// List of example cite strings
|
/// List of example cite strings
|
||||||
QStringList citationStyles(BiblioInfo const & bi);
|
QStringList citationStyles(BiblioInfo const & bi, size_t max_size);
|
||||||
|
|
||||||
/// Set the Params variable for the Controller.
|
/// Set the Params variable for the Controller.
|
||||||
void apply(int const choice, bool const full, bool const force,
|
void apply(int const choice, bool const full, bool const force,
|
||||||
|
@ -1554,9 +1554,10 @@ void MenuDefinition::expandCiteStyles(BufferView const * bv)
|
|||||||
vector<docstring> const keys = getVectorFromString(key);
|
vector<docstring> const keys = getVectorFromString(key);
|
||||||
|
|
||||||
vector<CitationStyle> const citeStyleList = buf->params().citeStyles();
|
vector<CitationStyle> const citeStyleList = buf->params().citeStyles();
|
||||||
|
static const size_t max_length = 40;
|
||||||
vector<docstring> citeStrings =
|
vector<docstring> citeStrings =
|
||||||
buf->masterBibInfo().getCiteStrings(keys, citeStyleList, bv->buffer(),
|
buf->masterBibInfo().getCiteStrings(keys, citeStyleList, bv->buffer(),
|
||||||
false, before, after, from_utf8("dialog"));
|
before, after, from_utf8("dialog"), max_length);
|
||||||
|
|
||||||
vector<docstring>::const_iterator cit = citeStrings.begin();
|
vector<docstring>::const_iterator cit = citeStrings.begin();
|
||||||
vector<docstring>::const_iterator end = citeStrings.end();
|
vector<docstring>::const_iterator end = citeStrings.end();
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "support/lstrings.h"
|
#include "support/lstrings.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <climits>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace lyx::support;
|
using namespace lyx::support;
|
||||||
@ -273,8 +274,8 @@ docstring InsetCitation::complexLabel(bool for_xhtml) const
|
|||||||
buffer().params().documentClass().addCiteMacro("!textafter", to_utf8(after));
|
buffer().params().documentClass().addCiteMacro("!textafter", to_utf8(after));
|
||||||
*/
|
*/
|
||||||
docstring label;
|
docstring label;
|
||||||
vector<docstring> const keys = getVectorFromString(key);
|
vector<docstring> keys = getVectorFromString(key);
|
||||||
label = biblist.getLabel(keys, buffer(), cite_type, for_xhtml, before, after);
|
label = biblist.getLabel(keys, buffer(), cite_type, for_xhtml, UINT_MAX, before, after);
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,10 @@ What's new
|
|||||||
- Make selection by mouse drag more reliable in mathed (bug 9074).
|
- Make selection by mouse drag more reliable in mathed (bug 9074).
|
||||||
|
|
||||||
- Fix undo with many individual changes (e.g. with replace all)
|
- Fix undo with many individual changes (e.g. with replace all)
|
||||||
(bug #7079).
|
(bug 7079).
|
||||||
|
|
||||||
|
- Fix problem with display of citation information when a whole lot of
|
||||||
|
entries are cited at once (bug 9131).
|
||||||
|
|
||||||
- Do not spellcheck "code" style in logical markup module.
|
- Do not spellcheck "code" style in logical markup module.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user