X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetCitation.cpp;h=13fddd7802217c2f6015ee5c87bf2625a5bdfeb9;hb=3d7ede605978461a6bd67b250925fcc8bf8404c3;hp=293b0a12391637898a45b1182ce87ffaf06da1da;hpb=94e992c5ed71c8b3fbb131e6269f9a1a6cd6ab16;p=lyx.git diff --git a/src/insets/InsetCitation.cpp b/src/insets/InsetCitation.cpp index 293b0a1239..13fddd7802 100644 --- a/src/insets/InsetCitation.cpp +++ b/src/insets/InsetCitation.cpp @@ -24,6 +24,7 @@ #include "LaTeXFeatures.h" #include "output_xhtml.h" #include "ParIterator.h" +#include "texstream.h" #include "TocBackend.h" #include "support/debug.h" @@ -165,17 +166,18 @@ docstring InsetCitation::toolTip(BufferView const & bv, int, int) const return _("No citations selected!"); vector keys = getVectorFromString(key); - vector::const_iterator it = keys.begin(); - vector::const_iterator en = keys.end(); + if (keys.size() == 1) + return bi.getInfo(keys[0], buffer(), true); + docstring tip; - for (; it != en; ++it) { - docstring const key_info = bi.getInfo(*it, buffer()); + tip += "
    "; + for (docstring const & key : keys) { + docstring const key_info = bi.getInfo(key, buffer(), true); if (key_info.empty()) continue; - if (!tip.empty()) - tip += "\n"; - tip += wrap(key_info, -4); + tip += "
  1. " + key_info + "
  2. "; } + tip += "
"; return tip; } @@ -313,25 +315,18 @@ void InsetCitation::updateBuffer(ParIterator const &, UpdateType) { if (!cache.recalculate && buffer().citeLabelsValid()) return; - // The label may have changed, so we have to re-create it. docstring const glabel = generateLabel(); - - unsigned int const maxLabelChars = 45; - - docstring label = glabel; - if (label.size() > maxLabelChars) { - label.erase(maxLabelChars - 3); - label += "..."; - } - cache.recalculate = false; cache.generated_label = glabel; - cache.screen_label = label; + unsigned int const maxLabelChars = 45; + cache.screen_label = glabel.substr(0, maxLabelChars + 1); + support::truncateWithEllipsis(cache.screen_label, maxLabelChars); } -void InsetCitation::addToToc(DocIterator const & cpit, bool output_active) const +void InsetCitation::addToToc(DocIterator const & cpit, bool output_active, + UpdateType) const { // NOTE // BiblioInfo::collectCitedEntries() uses the TOC to collect the citations @@ -405,7 +400,7 @@ void InsetCitation::toString(odocstream & os) const } -void InsetCitation::forOutliner(docstring & os, size_t) const +void InsetCitation::forOutliner(docstring & os, size_t const, bool const) const { os += screenLabel(); }