Fix bug #7682. Problem was that we were finding the children using the

BufferList, which knows nothing about clones.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39327 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2011-07-16 13:30:17 +00:00
parent 6df1e42b16
commit d89d60c5a7
2 changed files with 12 additions and 9 deletions

View File

@ -533,32 +533,35 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, docstring & rem,
}
void Encodings::initUnicodeMath(Buffer const & buffer, bool clear_sets)
void Encodings::initUnicodeMath(Buffer const & buffer, bool for_master)
{
#ifdef TEX2LYX
// The code below is not needed in tex2lyx and requires additional stuff
(void)buffer;
(void)clear_sets;
(void)for_master;
#else
if (clear_sets) {
if (for_master) {
mathcmd.clear();
textcmd.clear();
mathsym.clear();
}
// Check master
// Check this buffer
Inset & inset = buffer.inset();
InsetIterator it = inset_iterator_begin(inset);
InsetIterator const end = inset_iterator_end(inset);
for (; it != end; ++it)
it->initUnicodeMath();
if (!for_master)
return;
// Check children
BufferList::iterator bit = theBufferList().begin();
BufferList::iterator const bend = theBufferList().end();
ListOfBuffers blist = buffer.getDescendents();
ListOfBuffers::const_iterator bit = blist.begin();
ListOfBuffers::const_iterator const bend = blist.end();
for (; bit != bend; ++bit)
if (buffer.isChild(*bit))
initUnicodeMath(**bit, false);
initUnicodeMath(**bit, false);
#endif
}

View File

@ -220,7 +220,7 @@ public:
/**
* Initialize mathcmd, textcmd, and mathsym sets.
*/
static void initUnicodeMath(Buffer const & buffer, bool clear_sets = true);
static void initUnicodeMath(Buffer const & buffer, bool for_master = true);
/**
* If \p c cannot be encoded in the given \p encoding, convert
* it to something that LaTeX can understand in mathmode.