mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-23 10:18:50 +00:00
Fix bug connected with excluded modules and default modules: We need to make
sure that default modules do not exclude loaded modules and also that loaded modules do not exclude them. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26922 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
21ad65c437
commit
8bc9c319d2
@ -1494,10 +1494,15 @@ bool BufferParams::setBaseClass(string const & classname)
|
||||
|
||||
pimpl_->baseClass_ = classname;
|
||||
|
||||
// add any required modules not already in use
|
||||
// add any default modules not already in use
|
||||
list<string> const & mods = baseClass()->defaultModules();
|
||||
list<string>::const_iterator mit = mods.begin();
|
||||
list<string>::const_iterator men = mods.end();
|
||||
|
||||
// we want to add these to the front, but in the right order,
|
||||
// so we collect them here first.
|
||||
list<string> modulesToAdd;
|
||||
|
||||
for (; mit != men; mit++) {
|
||||
string const & modName = *mit;
|
||||
// see if we're already in use
|
||||
@ -1514,12 +1519,25 @@ bool BufferParams::setBaseClass(string const & classname)
|
||||
"' not added because removed by user.");
|
||||
continue;
|
||||
}
|
||||
|
||||
// Now we want to check the list of selected modules to see if any of them
|
||||
// exclude this one.
|
||||
// excludes this one, or if we exclude one of them.
|
||||
LyXModule * thismod = moduleList[modName];
|
||||
if (!thismod) {
|
||||
LYXERR0("Adding default module " << modName <<
|
||||
" even though it is unavailable.");
|
||||
modulesToAdd.push_back(modName);
|
||||
continue;
|
||||
}
|
||||
|
||||
bool foundit = false;
|
||||
vector<string> const ourExcMods = thismod->getExcludedModules();
|
||||
vector<string>::const_iterator const eit = ourExcMods.begin();
|
||||
vector<string>::const_iterator const een = ourExcMods.end();
|
||||
|
||||
// so iterate over the selected modules...
|
||||
LayoutModuleList::const_iterator lit = layoutModules_.begin();
|
||||
LayoutModuleList::const_iterator len = layoutModules_.end();
|
||||
LayoutModuleList::const_iterator const len = layoutModules_.end();
|
||||
for (; lit != len; lit++) {
|
||||
LyXModule * lm = moduleList[*lit];
|
||||
if (!lm)
|
||||
@ -1533,12 +1551,22 @@ bool BufferParams::setBaseClass(string const & classname)
|
||||
*lit << "'.");
|
||||
break;
|
||||
}
|
||||
if (find(eit, een, *lit) != een) {
|
||||
foundit = true;
|
||||
LYXERR(Debug::TCLASS, "Default module `" << modName <<
|
||||
"' not added because it excludes loaded module `" <<
|
||||
*lit << "'.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundit) {
|
||||
LYXERR(Debug::TCLASS, "Default module `" << modName << "' added.");
|
||||
layoutModules_.push_back(modName);
|
||||
modulesToAdd.push_back(modName);
|
||||
}
|
||||
}
|
||||
|
||||
layoutModules_.insert(layoutModules_.begin(), modulesToAdd.begin(), modulesToAdd.end());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user