diff --git a/src/Cursor.cpp b/src/Cursor.cpp index b65033fa59..4869fbdedf 100644 --- a/src/Cursor.cpp +++ b/src/Cursor.cpp @@ -1894,8 +1894,15 @@ bool Cursor::upDownInText(bool up, bool & updateNeeded) if (update) { 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); }