X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathGrid.cpp;h=0a637ec715c26ae8f32d5bf4ab5f718de9d02385;hb=21c92c8a129b5f3ff56de33bf2941a25967cffbb;hp=fa1aae45f9be9e6a4d951aa501095e634c094b3a;hpb=7869960888963d4459a356c6639b2043448e3a0c;p=lyx.git diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp index fa1aae45f9..0a637ec715 100644 --- a/src/mathed/InsetMathGrid.cpp +++ b/src/mathed/InsetMathGrid.cpp @@ -1624,7 +1624,7 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) } else { // multiple cells cur.recordUndoInset(); - col_type startcol = col(cur.idx()); + col_type startcol = col(cur.idx()); row_type startrow = cur.row(); col_type oldncols = ncols(); col_type numcols = @@ -1633,7 +1633,7 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) min(grid.nrows(), nrows() - cur.row()); for (row_type r = 0; r < numrows; ++r) { for (col_type c = 0; c < numcols; ++c) { - idx_type i = index(r + cur.row(), c + col(cur.idx())); + idx_type i = index(r + startrow, c + startcol); cell(i).insert(c == 0 ? cur.pos() : 0, grid.cell(grid.index(r, c))); } @@ -1641,15 +1641,15 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) rowinfo_[r].lines += grid.rowinfo_[r].lines; else { for (unsigned int l = 0; l < grid.rowinfo_[r].lines; ++l) { - idx_type i = index(r + cur.row(), 0); + idx_type i = index(r + startrow, 0); cell(i).insert(0, MathAtom(new InsetMathUnknown(from_ascii("\\hline")))); } } // append columns for the left over horizontal cells for (InsetMath::col_type c = numcols; c < grid.ncols(); ++c) { - addCol(c + 1); - idx_type i = index(r + cur.row(), c + 1); + addCol(c + startcol); + idx_type i = index(r + startrow, min(c + startcol, ncols() - 1)); cell(i).append(grid.cell(grid.index(r, c))); ++numcols; } @@ -1662,7 +1662,7 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) row_type crow = startrow + r; addRow(crow - 1); for (col_type c = 0; c < grid.ncols(); ++c) - cell(index(crow, c + startcol)).append(grid.cell(grid.index(r, c))); + cell(index(min(crow, nrows() - 1), min(c + startcol, ncols() - 1))).append(grid.cell(grid.index(r, c))); if (hline_enabled) rowinfo_[crow].lines += grid.rowinfo_[r].lines; else {