diff --git a/src/insets/insettabular.C b/src/insets/insettabular.C index 66b4e4e9d6..b5af539eb9 100644 --- a/src/insets/insettabular.C +++ b/src/insets/insettabular.C @@ -754,27 +754,22 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd) row_type rs, re; col_type cs, ce; getSelection(cur, rs, re, cs, ce); + LCursor tmpcur = cur; for (row_type i = rs; i <= re; ++i) { for (col_type j = cs; j <= ce; ++j) { // cursor follows cell: - cur.idx() = tabular.getCellNumber(i, j); + tmpcur.idx() = tabular.getCellNumber(i, j); // select this cell only: - cur.pos() = 0; - cur.resetAnchor(); - cur.pos() = cur.top().lastpos(); - cur.setCursor(cur); - cur.setSelection(); - cell(cur.idx())->dispatch(cur, cmd); + tmpcur.pit() = 0; + tmpcur.pos() = 0; + tmpcur.resetAnchor(); + tmpcur.pit() = tmpcur.lastpit(); + tmpcur.pos() = tmpcur.top().lastpos(); + tmpcur.setCursor(tmpcur); + tmpcur.setSelection(); + cell(tmpcur.idx())->dispatch(tmpcur, cmd); } } - // Restore original selection - cur.idx() = tabular.getCellNumber(rs, cs); - cur.pos() = 0; - cur.resetAnchor(); - cur.idx() = tabular.getCellNumber(re, ce); - cur.pos() = cur.top().lastpos(); - cur.setCursor(cur); - cur.setSelection(); break; } else { cell(cur.idx())->dispatch(cur, cmd);