fix cursor movements.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16638 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2007-01-10 10:59:18 +00:00
parent e0a7b67497
commit 31cbae750d
3 changed files with 15 additions and 4 deletions

View File

@ -1238,6 +1238,8 @@ void BufferView::setCursor(DocIterator const & dit)
dit[i].inset().edit(cursor_, true);
cursor_.setCursor(dit);
// remember new position.
cursor_.setTargetX();
cursor_.selection() = false;
}
@ -1281,6 +1283,7 @@ bool BufferView::mouseSetCursor(LCursor & cur)
cursor_ = cur;
cursor_.clearSelection();
// remember new position.
cursor_.setTargetX();
finishUndo();
return update;

View File

@ -1724,6 +1724,8 @@ void LyXText::setCursorFromCoordinates(LCursor & cur, int const x, int const y)
<< endl;
setCursor(cur, pit, pos, true, bound);
// remember new position.
cur.setTargetX();
}

View File

@ -985,13 +985,16 @@ bool LyXText::cursorUp(LCursor & cur)
ParagraphMetrics const & pm = tm.parMetrics(cur.pit());
int row;
int const x = cur.targetX();
if (cur.pos() && cur.boundary())
row = pm.pos2row(cur.pos()-1);
else
row = pm.pos2row(cur.pos());
// remember current position only if we are not at the end of a row.
if (cur.pos() != pm.rows()[row].endpos())
cur.setTargetX();
int const x = cur.targetX();
if (!cur.selection()) {
int const y = bv_funcs::getPos(cur.bv(), cur, cur.boundary()).y_;
LCursor old = cur;
@ -1041,13 +1044,16 @@ bool LyXText::cursorDown(LCursor & cur)
ParagraphMetrics const & pm = tm.parMetrics(cur.pit());
int row;
int const x = cur.targetX();
if (cur.pos() && cur.boundary())
row = pm.pos2row(cur.pos()-1);
else
row = pm.pos2row(cur.pos());
// remember current position only if we are not at the end of a row.
if (cur.pos() != pm.rows()[row].endpos())
cur.setTargetX();
int const x = cur.targetX();
if (!cur.selection()) {
int const y = bv_funcs::getPos(cur.bv(), cur, cur.boundary()).y_;
LCursor old = cur;