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 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 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") { else if (t.cs() == "kern") {
// FIXME: A hack... // FIXME: A hack...
docstring s; docstring s;
int num_tokens = 0;
while (true) { while (true) {
Token const & t = getToken(); Token const & t = getToken();
++num_tokens;
if (!good()) { if (!good()) {
putback(); s.clear();
while (num_tokens--)
putback();
break; break;
} }
s += t.character(); s += t.character();
if (isValidLength(to_utf8(s))) if (isValidLength(to_utf8(s)))
break; 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") { else if (t.cs() == "label") {