bugfix: clicking past end of screen line

[?]
Jun 29, 2022, 4:11 PM
GJLOKCYKETWXJXBOS5222HVZIKBDOGLLR5QLUZYCTZG7FBYDTQMQC

Dependencies

  • [2] 4VKEE43Z bugfix
  • [3] 2RXZ3PGO beginning of a new approach to scroll+wrap
  • [4] GE56XURA bugfix: cursor past end of screen line
  • [5] 5L7K4GBD clicking to the right of a wrapped line
  • [6] 5FW7YOFT highlight selection while dragging
  • [7] BOFNXP5G clicking now moves the cursor even on long, wrapped lines
  • [*] LXTTOB33 extract a couple of files
  • [*] BULPIBEG beginnings of a module for the text editor

Change contents

  • edit in text_tests.lua at line 164
    [9.2457]
    [2.2]
    function test_click_on_wrapping_line()
    io.write('\ntest_click_on_wrapping_line')
    -- display a wrapping line
    App.screen.init{width=80, height=80}
    -- 12345678901234
    Lines = load_array{"madam I'm adam"}
    Line_width = 75
    Cursor1 = {line=1, pos=1}
    Screen_top1 = {line=1, pos=1}
    Screen_bottom1 = {}
    App.draw()
    local y = Margin_top
    App.screen.check(y, 'madam ', 'F - test_click_on_wrapping_line/baseline/screen:1')
    y = y + Line_height
    App.screen.check(y, "I'm ada", 'F - test_click_on_wrapping_line/baseline/screen:2')
    y = y + Line_height
    -- click past end of second screen line
    App.draw()
    App.run_after_mouse_click(App.screen.width-2,y-2, 1)
    -- cursor moves to end of screen line
    check_eq(Cursor1.line, 1, 'F - test_click_on_wrapping_line/cursor:line')
    check_eq(Cursor1.pos, 13, 'F - test_click_on_wrapping_line/cursor:pos')
    end
    function test_click_past_end_of_wrapping_line()
    io.write('\ntest_click_past_end_of_wrapping_line')
    -- display a wrapping line
    App.screen.init{width=80, height=80}
    -- 12345678901234
    Lines = load_array{"madam I'm adam"}
    Line_width = 75
    Cursor1 = {line=1, pos=1}
    Screen_top1 = {line=1, pos=1}
    Screen_bottom1 = {}
    App.draw()
    local y = Margin_top
    App.screen.check(y, 'madam ', 'F - test_click_past_end_of_wrapping_line/baseline/screen:1')
    y = y + Line_height
    App.screen.check(y, "I'm ada", 'F - test_click_past_end_of_wrapping_line/baseline/screen:2')
    y = y + Line_height
    App.screen.check(y, 'm', 'F - test_click_past_end_of_wrapping_line/baseline/screen:3')
    y = y + Line_height
    -- click past the end of it
    App.draw()
    App.run_after_mouse_click(App.screen.width-2,y-2, 1)
    -- cursor moves to end of line
    check_eq(Cursor1.pos, 15, 'F - test_click_past_end_of_wrapping_line/cursor') -- one more than the number of UTF-8 code-points
    end
  • replacement in text.lua at line 688
    [2.1535][3.1245:1311](),[3.437][3.1245:1311]()
    return line.screen_line_starting_pos[screen_line_index+1]
    [2.1535]
    [3.528]
    return line.screen_line_starting_pos[screen_line_index+1]-1