Op 12-5-2012 15:06, Vincent van Ravesteijn schreef:
The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit 6cf1847b31617cd2ad190919d0ceaa51e1601ad8
Author: Vincent van Ravesteijn<[email protected]>
Date:   Sat May 12 14:11:56 2012 +0200

     New function BufferList::newInternalBuffer

     This solves the problem that newBuffer() already use Buffer::isInternal
     but there was no chance to set it yet.

diff --git a/src/BufferList.cpp b/src/BufferList.cpp
index c107862..a5c4b42 100644
--- a/src/BufferList.cpp
+++ b/src/BufferList.cpp
@@ -104,8 +104,30 @@ 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<Buffer>  tmpbuf;
        try {
                tmpbuf.reset(new Buffer(s));
@@ -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 2e4258c..95df26a 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 2bd1be4..f60579b 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 346295d..5eca896 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_);



To Branch (to prevent a regression) ?

Vincent

Reply via email to