]> git.lyx.org Git - features.git/commitdiff
fix crash discovered by Michael
authorAndré Pönitz <poenitz@gmx.net>
Tue, 27 Nov 2001 09:44:32 +0000 (09:44 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Tue, 27 Nov 2001 09:44:32 +0000 (09:44 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3085 a592a061-630c-0410-9148-cb99ea01b6c8

src/mathed/math_cursor.C
src/mathed/math_gridinset.C

index dfcca46357ef069a4c47e2a9f3e71a99a4502249..afc6bbc1796bd3fb86774b3617f1abf2caf29409 100644 (file)
@@ -952,7 +952,7 @@ void MathCursor::normalize() const
                       << idx() << " " << par()->nargs() << "\n";
                dump("error 2");
        }
-       it->idx()    = min(idx(), par()->nargs() - 1);
+       it->idx() = min(idx(), par()->nargs() - 1);
 
        if (pos() > size()) {
                lyxerr << "this should not really happen - 2: "
@@ -1058,7 +1058,7 @@ void MathCursor::idxPrev()
 
 void MathCursor::splitCell()
 {
-       if (idx() == par()->nargs() - 1
+       if (idx() + 1 == par()->nargs()
                return;
        MathArray ar = array();
        ar.erase(0, pos());
index fea6255d2d23a494ba5327bb3280c821cd45a432..600b7140cc925b58aeb005ecc5204c6025248ff2 100644 (file)
@@ -403,7 +403,7 @@ bool MathGridInset::idxLeft(idx_type & idx, pos_type & pos) const
 bool MathGridInset::idxRight(idx_type & idx, pos_type & pos) const
 {
        // leave matrix if on the right hand edge
-       if (col(idx) == ncols() - 1)
+       if (col(idx) + 1 == ncols())
                return false;
        idx++;
        pos = 0;
@@ -490,30 +490,26 @@ void MathGridInset::idxDelete(idx_type & idx, bool & popit, bool & deleteit)
        popit    = false;
        deleteit = false;
 
-       // delete entire sequence of ncols() empty cells if possible
-       if (idx <= index(nrows() - 1, 0))       {
-               bool deleterow = true;
-               for (idx_type i = idx; i < idx + ncols(); ++i)
-                       if (cell(i).size()) {
-                               deleterow = false;
-                               break;
-                       }
-
-               if (deleterow) {
-                       // move cells if necessary
-                       for (idx_type i = index(row(idx), 0); i < idx; ++i)
-                               cell(i).swap(cell(i + ncols()));
-                       
-                       delRow(row(idx));
+       // nothing to do if we are in the last row of the inset
+       if (row(idx) + 1 == nrows())
+               return;
 
-                       if (idx >= nargs())
-                               idx = nargs() - 1;
+       // try to delete entire sequence of ncols() empty cells if possible
+       for (idx_type i = idx; i < idx + ncols(); ++i)
+               if (cell(i).size())
                        return;
-               }
-       }
+
+       // move cells if necessary
+       for (idx_type i = index(row(idx), 0); i < idx; ++i)
+               cell(i).swap(cell(i + ncols()));
+               
+       delRow(row(idx));
+
+       if (idx >= nargs())
+               idx = nargs() - 1;
 
        // undo effect of Ctrl-Tab (i.e. pull next cell)
-       //if (idx != nargs() - 1
+       //if (idx + 1 != nargs()
        //      cell(idx).swap(cell(idx + 1));
 }