Skip to content
  • Colomban Wendling's avatar
    EvView: Fix cursor movement when logical and visual line order differs · dddd98b4
    Colomban Wendling authored
    Make sure not to move the caret in the wrong direction when restoring
    the visual line X offset, in case the visual and logical order is
    slightly different.
    
    The algorithm used to move the cursor on the next line and restore the
    X position across lines works as follows:
    
    1. Move `cursor_offset` to the next line by incrementing it until
       reaching a line break;
    2. Find the Y coordinate corresponding to the new cursor_offset;
    3. Find the text closest to the new Y coordinate and the previous X
       coordinate.
    4. Move cursor_offset to the text at this new (X, Y) location.
    
    The issue lies in step 3, which can find a position on a different line
    than expected in case several lines have a nearly the same Y position.
    
    Closes #889.
    dddd98b4