From: Vincent van Ravesteijn Date: Sat, 12 May 2012 12:11:56 +0000 (+0200) Subject: New function BufferList::newInternalBuffer X-Git-Tag: 2.0.4~87 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=c9cbd538b8a4cbc1c7901e00249edb7962e6ba58;p=features.git New function BufferList::newInternalBuffer This solves the problem that newBuffer() already use Buffer::isInternal but there was no chance to set it yet. (cherry picked from commit 6cf1847b31617cd2ad190919d0ceaa51e1601ad8) --- diff --git a/src/BufferList.cpp b/src/BufferList.cpp index 5143c13126..b8a30e8f1c 100644 --- a/src/BufferList.cpp +++ b/src/BufferList.cpp @@ -104,7 +104,29 @@ void BufferList::release(Buffer * buf) } +Buffer * BufferList::newInternalBuffer(string const & s) +{ + Buffer * const buf = createNewBuffer(s, false); + if (buf) { + buf->setInternal(true); + binternal.push_back(buf); + } + return buf; +} + + Buffer * BufferList::newBuffer(string const & s, bool const ronly) +{ + Buffer * const buf = createNewBuffer(s, ronly); + if (buf) { + LYXERR(Debug::INFO, "Assigning to buffer " << bstore.size()); + bstore.push_back(buf); + } + return buf; +} + + +Buffer * BufferList::createNewBuffer(string const & s, bool ronly) { auto_ptr tmpbuf; try { @@ -119,12 +141,6 @@ Buffer * BufferList::newBuffer(string const & s, bool const ronly) } } tmpbuf->params().useClassDefaults(); - if (tmpbuf->isInternal()) { - binternal.push_back(tmpbuf.get()); - } else { - LYXERR(Debug::INFO, "Assigning to buffer " << bstore.size()); - bstore.push_back(tmpbuf.get()); - } return tmpbuf.release(); } diff --git a/src/BufferList.h b/src/BufferList.h index b721386096..88c2f0c5b1 100644 --- a/src/BufferList.h +++ b/src/BufferList.h @@ -47,10 +47,14 @@ public: iterator end(); const_iterator end() const; - /// create a new buffer + /// create a new buffer and add it to the buffer list /// \return 0 if the Buffer creation is not possible for whatever reason. Buffer * newBuffer(std::string const & s, bool ronly = false); + /// create an internal buffer and add it to the internal buffer list + /// \return 0 if the Buffer creation is not possible for whatever reason. + Buffer * newInternalBuffer(std::string const & s); + /// delete a buffer void release(Buffer * b); @@ -120,6 +124,10 @@ public: //@} private: + /// create a new buffer + /// \return 0 if the Buffer creation is not possible for whatever reason. + Buffer * createNewBuffer(std::string const & s, bool ronly); + /// noncopiable BufferList(BufferList const &); void operator=(BufferList const &); diff --git a/src/CutAndPaste.cpp b/src/CutAndPaste.cpp index 45a6f72507..c2d72af058 100644 --- a/src/CutAndPaste.cpp +++ b/src/CutAndPaste.cpp @@ -469,9 +469,8 @@ void putClipboard(ParagraphList const & paragraphs, // a DocumentClass, via new, that is never deleted. If we were to go to // some kind of garbage collection there, or a shared_ptr, then this // would not be needed. - static Buffer * buffer = theBufferList().newBuffer( + static Buffer * buffer = theBufferList().newInternalBuffer( FileName::tempName("clipboard.internal").absFileName()); - buffer->setInternal(true); buffer->setUnnamed(true); buffer->paragraphs() = paragraphs; buffer->inset().setBuffer(*buffer); diff --git a/src/frontends/qt4/GuiWorkArea.cpp b/src/frontends/qt4/GuiWorkArea.cpp index 0b6b5a70e0..1eb06a9208 100644 --- a/src/frontends/qt4/GuiWorkArea.cpp +++ b/src/frontends/qt4/GuiWorkArea.cpp @@ -1369,9 +1369,8 @@ bool GuiWorkArea::isFullScreen() EmbeddedWorkArea::EmbeddedWorkArea(QWidget * w): GuiWorkArea(w) { - buffer_ = theBufferList().newBuffer( + buffer_ = theBufferList().newInternalBuffer( support::FileName::tempName("embedded.internal").absFileName()); - buffer_->setInternal(true); buffer_->setUnnamed(true); buffer_->setFullyLoaded(true); setBuffer(*buffer_);