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