Fix bug #9236: After we recreate the DocumentClass, we have to apply

it to the document.
This commit is contained in:
Richard Heck 2014-08-06 11:43:22 -04:00
parent 39492b0cd7
commit c2fdbbe01a

View File

@ -32,9 +32,12 @@
#include "Buffer.h"
#include "BufferList.h"
#include "BufferParams.h"
#include "BufferView.h"
#include "CmdDef.h"
#include "Color.h"
#include "CutAndPaste.h"
#include "ErrorList.h"
#include "Font.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
@ -54,6 +57,8 @@
#include "Thesaurus.h"
#include "version.h"
#include "insets/InsetText.h"
#include "support/convert.h"
#include "support/debug.h"
#include "support/ExceptionMessage.h"
@ -1915,7 +1920,16 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
istringstream ss(argument);
Lexer lex;
lex.setStream(ss);
// See #9236
// We need to make sure that, after we recreat the DocumentClass,
// which we do in readHeader, we apply it to the document itself.
DocumentClassConstPtr olddc = defaults.params().documentClassPtr();
int const unknown_tokens = defaults.readHeader(lex);
DocumentClassConstPtr newdc = defaults.params().documentClassPtr();
ErrorList el;
InsetText & theinset = static_cast<InsetText &>(defaults.inset());
cap::switchBetweenClasses(olddc, newdc, theinset, el);
if (unknown_tokens != 0) {
lyxerr << "Warning in LFUN_BUFFER_SAVE_AS_DEFAULT!\n"