diff options
Diffstat (limited to 'text.lua')
-rw-r--r-- | text.lua | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/text.lua b/text.lua index 4dd3d1c..d386ca8 100644 --- a/text.lua +++ b/text.lua @@ -145,7 +145,6 @@ function Text.compute_fragments(State, line_index) end end --- Don't handle any keys here that would trigger textinput above. function Text.keychord_press(State, chord) --? print('chord', chord, State.selection1.line, State.selection1.pos) --== shortcuts that move the cursor @@ -305,9 +304,11 @@ function Text.up(State) --? print('cursor pos is now '..tostring(State.cursor1.pos)) end if Text.lt1(State.cursor1, State.screen_top1) then - local top2 = Text.to2(State, State.screen_top1) - top2 = Text.previous_screen_line(State, top2) - State.screen_top1 = Text.to1(State, top2) + State.screen_top1 = { + line=State.cursor1.line, + pos=Text.pos_at_start_of_screen_line(State, State.cursor1), + } + Text.redraw_all(State) -- if we're scrolling, reclaim all fragments to avoid memory leaks end end @@ -429,9 +430,11 @@ function Text.left(State) State.cursor1.pos = utf8.len(State.lines[State.cursor1.line].data) + 1 end if Text.lt1(State.cursor1, State.screen_top1) then - local top2 = Text.to2(State, State.screen_top1) - top2 = Text.previous_screen_line(State, top2) - State.screen_top1 = Text.to1(State, top2) + State.screen_top1 = { + line=State.cursor1.line, + pos=Text.pos_at_start_of_screen_line(State, State.cursor1), + } + Text.redraw_all(State) -- if we're scrolling, reclaim all fragments to avoid memory leaks end end @@ -484,7 +487,7 @@ function Text.snap_cursor_to_bottom_of_screen(State) --? print('to2: =>', top2.line, top2.screen_line, top2.screen_pos) -- slide to start of screen line top2.screen_pos = 1 -- start of screen line ---? print('snap', State.screen_top1.line, State.screen_top1.pos, State.screen_top1.posB, State.cursor1.line, State.cursor1.pos, State.screen_bottom1.line, State.screen_bottom1.pos) +--? print('snap', State.screen_top1.line, State.screen_top1.pos, State.cursor1.line, State.cursor1.pos, State.screen_bottom1.line, State.screen_bottom1.pos) --? print('cursor pos '..tostring(State.cursor1.pos)..' is on the #'..tostring(top2.screen_line)..' screen line down') local y = App.screen.height - State.line_height -- duplicate some logic from love.draw |