]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetBibitem.cpp
requires is a keyword in C++2a
[lyx.git] / src / insets / InsetBibitem.cpp
index 2060b1a1c9f176c9ff537f6ba6d53fb42feaf441..c70e92ea734866aa16ba6f0cc0a1cef80e0775f4 100644 (file)
@@ -155,8 +155,9 @@ void InsetBibitem::doDispatch(Cursor & cur, FuncRequest & cmd)
                setParam("literal", p["literal"]);
 
                if (p["key"] != old_key) {
+                       // changeRefsIfUnique handles undo
+                       cur.bv().buffer().changeRefsIfUnique(old_key, p["key"]);
                        updateCommand(p["key"]);
-                       cur.bv().buffer().changeRefsIfUnique(old_key, params()["key"]);
                        cur.forceBufferUpdate();
                        buffer().invalidateBibinfoCache();
                }
@@ -188,9 +189,15 @@ docstring InsetBibitem::bibLabel() const
        if (bp.citeEngineType() == ENGINE_TYPE_NUMERICAL)
                return autolabel_;
        docstring label = getParam("label");
-       if (!label.empty() && bp.citeEngine() == "natbib")
+       if (!label.empty() && bp.citeEngine() == "natbib") {
                // Add a space before opening paren
                label = subst(label, from_ascii("("), from_ascii(" ("));
+               // and strip off long author list
+               docstring striplabel;
+               label = rsplit(label, striplabel, ')');
+               if (!striplabel.empty())
+                       label = striplabel + ")";
+       }
        return label.empty() ? autolabel_ : label;
 }
 
@@ -210,7 +217,7 @@ int InsetBibitem::plaintext(odocstringstream & os,
        docstring const str = oss.str();
        os << str;
 
-       return str.size();
+       return int(str.size());
 }
 
 
@@ -223,7 +230,7 @@ docstring bibitemWidest(Buffer const & buffer, OutputParams const & runparams)
 
        int w = 0;
 
-       InsetBibitem const * bitem = 0;
+       InsetBibitem const * bitem = nullptr;
 
        // FIXME: this font is used unitialized for now but should  be set to
        // a proportional font. Here is what Georg Baum has to say about it:
@@ -273,7 +280,7 @@ docstring bibitemWidest(Buffer const & buffer, OutputParams const & runparams)
                // So for now we just use the label size in order to be sure
                // that GUI and no-GUI gives the same bibitem (even if that is
                // potentially the wrong one.
-               int const wx = label.size();
+               int const wx = int(label.size());
 
                if (wx > w) {
                        w = wx;
@@ -320,7 +327,7 @@ void InsetBibitem::collectBibKeys(InsetIterator const & it, FileNameList & /*che
 
 
 // Update the counters of this inset and of its contents
-void InsetBibitem::updateBuffer(ParIterator const & it, UpdateType utype)
+void InsetBibitem::updateBuffer(ParIterator const & it, UpdateType utype, bool const /*deleted*/)
 {
        BufferParams const & bp = buffer().masterBuffer()->params();
        Counters & counters = bp.documentClass().counters();