From febb242ce21b0733046cec3296d8c88582ffd82a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Wed, 8 Aug 2001 15:35:49 +0000 Subject: [PATCH] cursor up/down; fix missing brace in write() git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2455 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/mathed/math_charinset.C | 45 ++++++++----------------------------- src/mathed/math_cursor.C | 19 +++++++++++++--- 2 files changed, 25 insertions(+), 39 deletions(-) diff --git a/src/mathed/math_charinset.C b/src/mathed/math_charinset.C index a5eca98288..1a098466f8 100644 --- a/src/mathed/math_charinset.C +++ b/src/mathed/math_charinset.C @@ -58,39 +58,14 @@ void MathCharInset::draw(Painter & pain, int x, int y) const void MathCharInset::write(std::ostream & os, bool) const { - int brace = 0; - - if (MathIsSymbol(code_)) { - latexkeys const * l = lm_get_key_by_id(char_, LM_TK_SYM); - - if (l == 0) - l = lm_get_key_by_id(char_, LM_TK_BIGSYM); - - if (l) { - os << '\\' << l->name << ' '; - } else { - lyxerr << "Could not find the LaTeX name for " - << char_ << " and code_ " << code_ << "!" << std::endl; - } - } else { - if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM) - os << '\\' << math_font_name[code_ - LM_TC_RM] << '{'; - - // Is there a standard logical XOR? - if ((code_ == LM_TC_TEX && char_ != '{' && char_ != '}') || - (code_ == LM_TC_SPECIAL)) - os << '\\'; - else { - if (char_ == '{') - ++brace; - if (char_ == '}') - --brace; - } - if (char_ == '}' && code_ == LM_TC_TEX && brace < 0) - lyxerr <<"Math warning: Unexpected closing brace.\n"; - else - os << char_; - } + if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM) + os << '\\' << math_font_name[code_ - LM_TC_RM] << '{'; + + if ((code_ == LM_TC_TEX && char_ != '{' && char_ != '}') || + (code_ == LM_TC_SPECIAL)) + os << '\\'; + + os << char_; if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM) os << '}'; @@ -99,7 +74,5 @@ void MathCharInset::write(std::ostream & os, bool) const void MathCharInset::writeNormal(std::ostream & os) const { - os << "[sqrt "; - cell(0).writeNormal(os); - os << "] "; + os << char_; } diff --git a/src/mathed/math_cursor.C b/src/mathed/math_cursor.C index dd60e72fdd..124a770c42 100644 --- a/src/mathed/math_cursor.C +++ b/src/mathed/math_cursor.C @@ -1172,12 +1172,15 @@ void MathCursor::splitCell() void MathCursor::breakLine() { + // leave inner cells + while (popRight()) + ; + MathMatrixInset * p = outerPar(); if (p->getType() == LM_OT_SIMPLE || p->getType() == LM_OT_EQUATION) { p->mutate(LM_OT_EQNARRAY); - p->addRow(0); - idx() = p->nrows(); - pos() = 0; + idx() = 0; + pos() = size(); } else { p->addRow(row()); @@ -1271,6 +1274,11 @@ void MathCursor::gotoX(int x) bool MathCursor::goUp() { + // first ask the inset if it knows better then we + if (par()->idxUp(idx(), pos())) + return true; + + // if not, apply brute force. int x0; int y0; getPos(x0, y0); @@ -1288,6 +1296,11 @@ bool MathCursor::goUp() bool MathCursor::goDown() { + // first ask the inset if it knows better then we + if (par()->idxDown(idx(), pos())) + return true; + + // if not, apply brute force. int x0; int y0; getPos(x0, y0); -- 2.39.5