From 6cf1847b31617cd2ad190919d0ceaa51e1601ad8 Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Sat, 12 May 2012 14:11:56 +0200 Subject: [PATCH] New function BufferList::newInternalBuffer This solves the problem that newBuffer() already use Buffer::isInternal but there was no chance to set it yet. --- src/BufferList.cpp | 28 ++++++++++++++++++++++------ src/BufferList.h | 10 +++++++++- src/CutAndPaste.cpp | 3 +-- src/frontends/qt4/GuiWorkArea.cpp | 3 +-- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/BufferList.cpp b/src/BufferList.cpp index c107862c6d..a5c4b42f03 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); + if (buf) { + buf->setInternal(true); + binternal.push_back(buf); + } + return buf; +} + + Buffer * BufferList::newBuffer(string const & s) +{ + Buffer * const buf = createNewBuffer(s); + if (buf) { + LYXERR(Debug::INFO, "Assigning to buffer " << bstore.size()); + bstore.push_back(buf); + } + return buf; +} + + +Buffer * BufferList::createNewBuffer(string const & s) { auto_ptr tmpbuf; try { @@ -119,12 +141,6 @@ Buffer * BufferList::newBuffer(string const & s) } } 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 2e4258c4cc..95df26aa6d 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); + /// 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); + /// noncopiable BufferList(BufferList const &); void operator=(BufferList const &); diff --git a/src/CutAndPaste.cpp b/src/CutAndPaste.cpp index 2bd1be48c1..f60579bcf2 100644 --- a/src/CutAndPaste.cpp +++ b/src/CutAndPaste.cpp @@ -470,9 +470,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 346295d370..5eca896fa1 100644 --- a/src/frontends/qt4/GuiWorkArea.cpp +++ b/src/frontends/qt4/GuiWorkArea.cpp @@ -1414,9 +1414,8 @@ GuiView & GuiWorkArea::view() 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_);