Fix bug #6246: InsetMathKern is broken

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31474 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Enrico Forestieri 2009-09-27 17:29:01 +00:00
parent a74e1b096c
commit eb065995b1
2 changed files with 17 additions and 4 deletions

View File

@ -57,13 +57,19 @@ void InsetMathKern::draw(PainterInfo &, int, int) const
void InsetMathKern::write(WriteStream & os) const
{
os << "\\kern" << from_utf8(wid_.asLatexString()) << ' ';
if (wid_.empty())
os << "\\kern" << ' ';
else
os << "\\kern" << from_utf8(wid_.asLatexString()) << ' ';
}
void InsetMathKern::normalize(NormalStream & os) const
{
os << "[kern " << from_utf8(wid_.asLatexString()) << ']';
if (wid_.empty())
os << "[kern]";
else
os << "[kern " << from_utf8(wid_.asLatexString()) << ']';
}

View File

@ -1552,17 +1552,24 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
else if (t.cs() == "kern") {
// FIXME: A hack...
docstring s;
int num_tokens = 0;
while (true) {
Token const & t = getToken();
++num_tokens;
if (!good()) {
putback();
s.clear();
while (num_tokens--)
putback();
break;
}
s += t.character();
if (isValidLength(to_utf8(s)))
break;
}
cell->push_back(MathAtom(new InsetMathKern(s)));
if (s.empty())
cell->push_back(MathAtom(new InsetMathKern));
else
cell->push_back(MathAtom(new InsetMathKern(s)));
}
else if (t.cs() == "label") {