diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2023-06-03 10:43:20 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2023-06-03 10:44:11 -0700 |
commit | cf0ba7c15431221e90f6aee87ea5b69ef0b18ea4 (patch) | |
tree | e07dc2253e5fb168e72597dec39f45296fce87ae | |
parent | 3114176ebd5b9895b5f67c759a2a705f673a4ac0 (diff) | |
download | text.love-cf0ba7c15431221e90f6aee87ea5b69ef0b18ea4.tar.gz |
handle wrapping lines
-rw-r--r-- | edit.lua | 4 | ||||
-rw-r--r-- | text_tests.lua | 17 |
2 files changed, 19 insertions, 2 deletions
diff --git a/edit.lua b/edit.lua index ddd17c1..5918165 100644 --- a/edit.lua +++ b/edit.lua @@ -232,8 +232,8 @@ function edit.mouse_press(State, x,y, mouse_button) State.old_selection1 = State.selection1 State.mousepress_shift = App.shift_down() State.selection1 = { - line=1, - pos=1, + line=State.screen_top1.line, + pos=State.screen_top1.pos, } return end diff --git a/text_tests.lua b/text_tests.lua index d5368a8..a01ad3e 100644 --- a/text_tests.lua +++ b/text_tests.lua @@ -847,6 +847,23 @@ function test_select_text_using_mouse_starting_above_text() check_eq(Editor_state.selection1.pos, 1, 'selection:pos') end +function test_select_text_using_mouse_starting_above_text_wrapping_line() + -- first screen line starts in the middle of a line + App.screen.init{width=50, height=60} + Editor_state = edit.initialize_test_state() + Editor_state.lines = load_array{'abc', 'defgh', 'xyz'} + Text.redraw_all(Editor_state) + Editor_state.cursor1 = {line=2, pos=5} + Editor_state.screen_top1 = {line=2, pos=3} + Editor_state.screen_bottom1 = {} + -- press mouse above first line of text + edit.run_after_mouse_press(Editor_state, Editor_state.left+8,5, 1) + -- selection is at screen top + check(Editor_state.selection1.line ~= nil, 'selection:line-not-nil') + check_eq(Editor_state.selection1.line, 2, 'selection:line') + check_eq(Editor_state.selection1.pos, 3, 'selection:pos') +end + function test_select_text_using_mouse_and_shift() App.screen.init{width=50, height=60} Editor_state = edit.initialize_test_state() |