]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetCitation.cpp
Clarify that the Dialog::lyxview_ pointer is in fact a reference
[lyx.git] / src / insets / InsetCitation.cpp
index 8f697993b143c94d43d011c2a6fbd50bdf5bfa80..13fddd7802217c2f6015ee5c87bf2625a5bdfeb9 100644 (file)
@@ -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<docstring> keys = getVectorFromString(key);
-       vector<docstring>::const_iterator it = keys.begin();
-       vector<docstring>::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 += "<ol>";
+       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 += "<li>" + key_info + "</li>";
        }
+       tip += "</ol>";
        return tip;
 }
 
@@ -183,7 +185,7 @@ docstring InsetCitation::toolTip(BufferView const & bv, int, int) const
 namespace {
 
 
-CitationStyle asValidLatexCommand(string const & input, vector<CitationStyle> const valid_styles)
+CitationStyle asValidLatexCommand(string const & input, vector<CitationStyle> const valid_styles)
 {
        CitationStyle cs = valid_styles[0];
        cs.forceUpperCase = false;
@@ -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 
@@ -339,8 +334,8 @@ void InsetCitation::addToToc(DocIterator const & cpit, bool output_active) const
        // by both XHTML and plaintext output. So, if we change what goes into the TOC,
        // then we will also need to change that routine.
        docstring const tocitem = getParam("key");
-       Toc & toc = buffer().tocBackend().toc("citation");
-       toc.push_back(TocItem(cpit, 0, tocitem, output_active));
+       shared_ptr<Toc> toc = buffer().tocBackend().toc("citation");
+       toc->push_back(TocItem(cpit, 0, tocitem, output_active));
 }
 
 
@@ -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();
 }