From: Vincent van Ravesteijn Date: Sun, 15 Nov 2009 22:01:12 +0000 (+0000) Subject: Fix bug #6320: LyX goes to infinite loop when selecting document parts. X-Git-Tag: 2.0.0~5122 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=f4125a65c0f8af2dc0cf0c3746e3a9c2f00ea168;p=features.git Fix bug #6320: LyX goes to infinite loop when selecting document parts. Set the boundary member correctly when the cursor goes to an 'empty' row. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32034 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/Cursor.cpp b/src/Cursor.cpp index 2a6d4e6420..14e31f922c 100644 --- a/src/Cursor.cpp +++ b/src/Cursor.cpp @@ -1914,8 +1914,16 @@ bool Cursor::upDownInText(bool up, bool & updateNeeded) } top().pos() = min(tm.x2pos(pit(), next_row, xo), top().lastpos()); - boundary(tm.x2pos(pit(), next_row, xo) - == tm.x2pos(pit(), next_row, tm.width())); + int const xpos = tm.x2pos(pit(), next_row, xo); + bool const at_end_row = xpos == tm.x2pos(pit(), next_row, tm.width()); + bool const at_beg_row = xpos == tm.x2pos(pit(), next_row, 0); + + if (at_end_row && at_beg_row) + // make sure the cursor ends up on this row + boundary(false); + else + boundary(at_end_row); + updateNeeded |= bv().checkDepm(*this, old); }