From b0035f07b10f855d3b462e1b3135e496f5488217 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Wed, 5 Nov 2008 19:01:59 +0000 Subject: [PATCH] Fix bug reported by Philippe relating to excluded modules: Excluded modules need to be removed before anything else is done. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27276 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferParams.cpp | 22 +++++++++++++++++++++- src/BufferParams.h | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 3a8b25b5e7..6531dfb671 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -1468,6 +1468,25 @@ void BufferParams::setDocumentClass(DocumentClass const * const tc) { } +void BufferParams::removeExcludedModules() +{ + // remove any modules the new base class excludes + list oldModules = getModules(); + clearLayoutModules(); + list::const_iterator oit = oldModules.begin(); + list::const_iterator oen = oldModules.end(); + list const & exclmods = baseClass()->excludedModules(); + for (; oit != oen; ++oit) { + // are we excluded by the document class? + if (find(exclmods.begin(), exclmods.end(), *oit) != exclmods.end()) { + LYXERR0("Module " << *oit << " dropped because excluded by document class."); + continue; + } + layoutModules_.push_back(*oit); + } +} + + void BufferParams::addDefaultModules() { // add any default modules not already in use @@ -1525,7 +1544,7 @@ bool BufferParams::checkModuleConsistency() { // are we excluded by the document class? if (find(exclmods.begin(), exclmods.end(), modname) != exclmods.end()) { consistent = false; - LYXERR0("Module " << modname << " dropped because excluded by document class."); + LYXERR0("WARNING: Module " << modname << " should already have been dropped!"); continue; } @@ -1627,6 +1646,7 @@ bool BufferParams::setBaseClass(string const & classname) } pimpl_->baseClass_ = classname; + removeExcludedModules(); addDefaultModules(); checkModuleConsistency(); diff --git a/src/BufferParams.h b/src/BufferParams.h index af7333364b..55e67aaa64 100644 --- a/src/BufferParams.h +++ b/src/BufferParams.h @@ -346,6 +346,8 @@ private: /// void readRemovedModules(Lexer &); /// + void removeExcludedModules(); + /// void addDefaultModules(); /// checks for consistency among modules: makes sure requirements /// are met, no modules exclude one another, etc, and resolves any -- 2.39.2