]> git.lyx.org Git - lyx.git/commitdiff
Fix bug reported by Philippe relating to excluded modules: Excluded
authorRichard Heck <rgheck@comcast.net>
Wed, 5 Nov 2008 19:01:59 +0000 (19:01 +0000)
committerRichard Heck <rgheck@comcast.net>
Wed, 5 Nov 2008 19:01:59 +0000 (19:01 +0000)
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
src/BufferParams.h

index 3a8b25b5e723ed763b57adf820fb7aaaf929dd37..6531dfb6717c79648fc647b605a0b581c0dfbced 100644 (file)
@@ -1468,6 +1468,25 @@ void BufferParams::setDocumentClass(DocumentClass const * const tc) {
 }
 
 
+void BufferParams::removeExcludedModules()
+{
+       // remove any modules the new base class excludes
+       list<string> oldModules = getModules();
+       clearLayoutModules();
+       list<string>::const_iterator oit = oldModules.begin();
+       list<string>::const_iterator oen = oldModules.end();
+       list<string> 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();
 
index af7333364b3b1aee59131990541d925acf0bc8b4..55e67aaa6453a4bf3c8328fb7cb244f8d0c333ff 100644 (file)
@@ -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