As it was, the comparison buffer was sharing a DocumentClass with
the buffer from which the document settings are taken.

(cherry picked from commit f9835d054d)
This commit is contained in:
Richard Heck 2017-04-02 20:59:23 -04:00
parent 6cc1bdc1ad
commit 1f8823bc9d

View File

@ -15,6 +15,8 @@
#include "Author.h"
#include "BufferParams.h"
#include "Changes.h"
#include "CutAndPaste.h"
#include "ErrorList.h"
#include "Font.h"
#include "insets/InsetText.h"
@ -381,7 +383,6 @@ void Compare::run()
// Copy the buffer params to the destination buffer
dest_buffer->params() = options_.settings_from_new
? new_buffer->params() : old_buffer->params();
// Copy extra authors to the destination buffer
AuthorList const & extra_authors = options_.settings_from_new ?
old_buffer->params().authors() : new_buffer->params().authors();
@ -389,12 +390,27 @@ void Compare::run()
for (; it != extra_authors.end(); ++it)
dest_buffer->params().authors().record(*it);
doStatusMessage();
// We will need this later
DocumentClassConstPtr const olddc =
dest_buffer->params().documentClassPtr();
// We do not want to share the DocumentClass with the other Buffer.
// See bug #10295.
dest_buffer->params().makeDocumentClass();
// do the real work
doStatusMessage();
// Do the real work
if (!doCompare())
return;
// The comparison routine simply copies the paragraphs over into the
// new buffer with the document class from wherever they came from.
// So we need to reset the document class of all the paragraphs.
// See bug #10295.
ErrorList el;
cap::switchBetweenClasses(
olddc, dest_buffer->params().documentClassPtr(),
static_cast<InsetText &>(dest_buffer->inset()), el);
finished(pimpl_->abort_);
return;
}