]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetBibitem.cpp
* src/insets/InsetSpace.cpp:
[lyx.git] / src / insets / InsetBibitem.cpp
index 93015395e0697d00029fe271bc3dbf488856f5e7..69d213822ba2622003b4ce2026db611ad4648324 100644 (file)
 
 #include "frontends/alert.h"
 
-#include "support/lstrings.h"
+#include "support/convert.h"
 #include "support/docstream.h"
 #include "support/gettext.h"
-#include "support/convert.h"
-
-#include <ostream>
+#include "support/lstrings.h"
 
 using namespace std;
 using namespace lyx::support;
@@ -47,14 +45,23 @@ int InsetBibitem::key_counter = 0;
 docstring const key_prefix = from_ascii("key-");
 
 
-InsetBibitem::InsetBibitem(InsetCommandParams const & p)
+InsetBibitem::InsetBibitem(Buffer const & buf, InsetCommandParams const & p)
        : InsetCommand(p, "bibitem")
 {
+       Inset::setBuffer(const_cast<Buffer &>(buf));
+       buffer_->invalidateBibinfoCache();
        if (getParam("key").empty())
                setParam("key", key_prefix + convert<docstring>(++key_counter));
 }
 
 
+InsetBibitem::~InsetBibitem()
+{
+       if (isBufferValid())
+               buffer_->invalidateBibinfoCache();
+}
+
+
 void InsetBibitem::initView()
 {
        updateCommand(getParam("key"));
@@ -115,6 +122,7 @@ void InsetBibitem::doDispatch(Cursor & cur, FuncRequest & cmd)
                if (params()["key"] != old_key)
                        cur.bv().buffer().changeRefsIfUnique(old_key,
                                params()["key"], CITE_CODE);
+               buffer_->invalidateBibinfoCache();
                break;
        }
 
@@ -233,7 +241,7 @@ void InsetBibitem::fillWithBibKeys(BiblioInfo & keys, InsetIterator const & it)
        keyvalmap[from_ascii("label")] = getParam("label");
        DocIterator doc_it(it); 
        doc_it.forwardPos();
-       keyvalmap[from_ascii("ref")] = doc_it.paragraph().asString(false);
+       keyvalmap[from_ascii("ref")] = doc_it.paragraph().asString();
        keys[key] = keyvalmap;
 }