]> git.lyx.org Git - features.git/commitdiff
New function BufferList::newInternalBuffer
authorVincent van Ravesteijn <vfr@lyx.org>
Sat, 12 May 2012 12:11:56 +0000 (14:11 +0200)
committerVincent van Ravesteijn <vfr@lyx.org>
Sun, 13 May 2012 18:50:57 +0000 (20:50 +0200)
This solves the problem that newBuffer() already use Buffer::isInternal
but there was no chance to set it yet.

(cherry picked from commit 6cf1847b31617cd2ad190919d0ceaa51e1601ad8)

src/BufferList.cpp
src/BufferList.h
src/CutAndPaste.cpp
src/frontends/qt4/GuiWorkArea.cpp

index 5143c1312666886941c88c782148ffde38847ce4..b8a30e8f1c9411825422df77b53411e78461eec4 100644 (file)
@@ -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<Buffer> 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();
 }
 
index b721386096006ae06db46f3c98ddd84834936c24..88c2f0c5b16fc3ddb6b72555515832427af6cb49 100644 (file)
@@ -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 &);
index 45a6f72507505e6351fe038c0762e78e34208f98..c2d72af058bff32152c530570da325c07ad4723d 100644 (file)
@@ -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);
index 0b6b5a70e0bb52fc14bb32a78e9f9dfbd0d6eae3..1eb06a9208559979174e2081e7b6c1a441bbd8b5 100644 (file)
@@ -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_);