* insettabular.C (doDispatch): do not modify cursor when iterating

over the cells to apply LFUN_EMPH and friends.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_4_X@15100 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2006-09-21 10:42:09 +00:00
parent adeb87826f
commit 0ce5f5cedf
3 changed files with 19 additions and 17 deletions

View File

@ -1,3 +1,8 @@
2006-09-21 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* insettabular.C (doDispatch): do not modify cursor when iterating
over the cells to apply LFUN_EMPH and friends.
2006-09-20 Jean-Marc Lasgouttes <lasgouttes@lyx.org> 2006-09-20 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* insettabular.C (cutSelection): reset cursor when it is invalid. * insettabular.C (cutSelection): reset cursor when it is invalid.

View File

@ -728,27 +728,22 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd)
row_type rs, re; row_type rs, re;
col_type cs, ce; col_type cs, ce;
getSelection(cur, rs, re, cs, ce); getSelection(cur, rs, re, cs, ce);
LCursor tmpcur = cur;
for (row_type i = rs; i <= re; ++i) { for (row_type i = rs; i <= re; ++i) {
for (col_type j = cs; j <= ce; ++j) { for (col_type j = cs; j <= ce; ++j) {
// cursor follows cell: // cursor follows cell:
cur.idx() = tabular.getCellNumber(i, j); tmpcur.idx() = tabular.getCellNumber(i, j);
// select this cell only: // select this cell only:
cur.pos() = 0; tmpcur.pit() = 0;
cur.resetAnchor(); tmpcur.pos() = 0;
cur.pos() = cur.top().lastpos(); tmpcur.resetAnchor();
cur.setCursor(cur); tmpcur.pit() = tmpcur.lastpit();
cur.setSelection(); tmpcur.pos() = tmpcur.top().lastpos();
cell(cur.idx())->dispatch(cur, cmd); 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; break;
} else { } else {
cell(cur.idx())->dispatch(cur, cmd); cell(cur.idx())->dispatch(cur, cmd);

View File

@ -83,6 +83,10 @@ What's new
- Fix a crash when selecting several cells in a tabular (bug 2630). - Fix a crash when selecting several cells in a tabular (bug 2630).
- Fix a crash when deleting a multi-cell selection in a tabular.
- Fix a crash when applying a font change to several cells in a tabular.
- Fix a crash when searching for an inset and none is present. - Fix a crash when searching for an inset and none is present.
- Fix a crash when scrolling the document and the cursor is inside an - Fix a crash when scrolling the document and the cursor is inside an
@ -92,8 +96,6 @@ What's new
- Fix a crash with change tracking in tables (bug 2600). - Fix a crash with change tracking in tables (bug 2600).
- Fix a crash when deleting a multi-cell selection in a tabular.
- Fix a crash when undoing super/subscript deletion (bug 2727). - Fix a crash when undoing super/subscript deletion (bug 2727).
- Fix a crash when the cursor is in an empty script and the user - Fix a crash when the cursor is in an empty script and the user