]> git.lyx.org Git - features.git/commitdiff
cursor up/down; fix missing brace in write()
authorAndré Pönitz <poenitz@gmx.net>
Wed, 8 Aug 2001 15:35:49 +0000 (15:35 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Wed, 8 Aug 2001 15:35:49 +0000 (15:35 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2455 a592a061-630c-0410-9148-cb99ea01b6c8

src/mathed/math_charinset.C
src/mathed/math_cursor.C

index a5eca98288fcf9419c8d49b3d6ccec017440a118..1a098466f8a564d4140646d38b94b4ae7b9c3fbe 100644 (file)
@@ -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_;
 }
index dd60e72fdddb6620117b9e56eeb8b505ef09d8ed..124a770c4275d463ec029eb5fa765f256c05b253 100644 (file)
@@ -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);