reduce ambitions a bit: page up/down need not start screen from the middle of a line
But we still have work to do for cursor up/down.
This commit is contained in:
parent
6b91c0688e
commit
a3f72abbde
27
main.lua
27
main.lua
|
@ -38,7 +38,7 @@ require 'icons'
|
||||||
-- once, and read them passively thereafter.
|
-- once, and read them passively thereafter.
|
||||||
Lines = {{mode='text', data=''}}
|
Lines = {{mode='text', data=''}}
|
||||||
Cursor_line = 1
|
Cursor_line = 1
|
||||||
Cursor_pos = 15 -- in Unicode codepoints, from 1 to utf8.len(line) + 1
|
Cursor_pos = 1 -- in Unicode codepoints, from 1 to utf8.len(line) + 1
|
||||||
|
|
||||||
Screen_width, Screen_height, Screen_flags = 0, 0, nil
|
Screen_width, Screen_height, Screen_flags = 0, 0, nil
|
||||||
|
|
||||||
|
@ -47,8 +47,7 @@ Cursor_x, Cursor_y = 0, 0 -- in pixels
|
||||||
-- scrolling support
|
-- scrolling support
|
||||||
Screen_top_line = 1
|
Screen_top_line = 1
|
||||||
Screen_bottom_line = 1
|
Screen_bottom_line = 1
|
||||||
Top_screen_line_starting_pos = 6 -- when top of screen starts in between a wrapped line
|
Top_screen_line_starting_pos = 1 -- when top of screen starts in between a wrapped line
|
||||||
Bottom_screen_line_starting_pos = 1 -- when bottom of screen starts in between a wrapped line
|
|
||||||
|
|
||||||
Current_drawing_mode = 'line'
|
Current_drawing_mode = 'line'
|
||||||
Previous_drawing_mode = nil
|
Previous_drawing_mode = nil
|
||||||
|
@ -61,17 +60,18 @@ Filename = love.filesystem.getUserDirectory()..'/lines.txt'
|
||||||
|
|
||||||
function love.load(arg)
|
function love.load(arg)
|
||||||
-- maximize window
|
-- maximize window
|
||||||
--? love.window.setMode(0, 0) -- maximize
|
love.window.setMode(0, 0) -- maximize
|
||||||
--? Screen_width, Screen_height, Screen_flags = love.window.getMode()
|
Screen_width, Screen_height, Screen_flags = love.window.getMode()
|
||||||
--? -- shrink slightly to account for window decoration
|
-- shrink slightly to account for window decoration
|
||||||
--? Screen_width = Screen_width-100
|
Screen_width = Screen_width-100
|
||||||
--? Screen_height = Screen_height-100
|
Screen_height = Screen_height-100
|
||||||
Screen_width = 120
|
-- for testing line wrap
|
||||||
Screen_height = 200
|
--? Screen_width = 120
|
||||||
|
--? Screen_height = 200
|
||||||
love.window.setMode(Screen_width, Screen_height)
|
love.window.setMode(Screen_width, Screen_height)
|
||||||
love.window.setTitle('Text with Lines')
|
love.window.setTitle('Text with Lines')
|
||||||
Line_width = 100
|
--? Line_width = 100
|
||||||
--? Line_width = math.floor(Screen_width/2/40)*40
|
Line_width = math.floor(Screen_width/2/40)*40
|
||||||
love.keyboard.setTextInput(true) -- bring up keyboard on touch screen
|
love.keyboard.setTextInput(true) -- bring up keyboard on touch screen
|
||||||
love.keyboard.setKeyRepeat(true)
|
love.keyboard.setKeyRepeat(true)
|
||||||
if #arg > 0 then
|
if #arg > 0 then
|
||||||
|
@ -178,7 +178,8 @@ function keychord_pressed(chord)
|
||||||
elseif chord == 'pagedown' then
|
elseif chord == 'pagedown' then
|
||||||
Screen_top_line = Screen_bottom_line
|
Screen_top_line = Screen_bottom_line
|
||||||
Cursor_line = Screen_top_line
|
Cursor_line = Screen_top_line
|
||||||
Cursor_pos = 1
|
Top_screen_line_starting_pos = 1
|
||||||
|
Cursor_pos = Top_screen_line_starting_pos
|
||||||
Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary()
|
Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary()
|
||||||
elseif chord == 'pageup' then
|
elseif chord == 'pageup' then
|
||||||
-- duplicate some logic from love.draw
|
-- duplicate some logic from love.draw
|
||||||
|
|
10
text.lua
10
text.lua
|
@ -26,13 +26,6 @@ function Text.draw(line, line_width, line_index)
|
||||||
y = y + math.floor(15*Zoom)
|
y = y + math.floor(15*Zoom)
|
||||||
if New_render then print('y', y) end
|
if New_render then print('y', y) end
|
||||||
end
|
end
|
||||||
if y > Screen_height then
|
|
||||||
if line.screen_line_starting_pos then
|
|
||||||
Bottom_screen_line_starting_pos = line.screen_line_starting_pos[#line.screen_line_starting_pos]
|
|
||||||
else
|
|
||||||
Bottom_screen_line_starting_pos = 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
x = 25
|
x = 25
|
||||||
if line.screen_line_starting_pos == nil then
|
if line.screen_line_starting_pos == nil then
|
||||||
line.screen_line_starting_pos = {1, pos}
|
line.screen_line_starting_pos = {1, pos}
|
||||||
|
@ -294,8 +287,11 @@ function Text.keychord_pressed(chord)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if Cursor_line > Screen_bottom_line then
|
if Cursor_line > Screen_bottom_line then
|
||||||
|
print('screen top before:', Screen_top_line, Top_screen_line_starting_pos)
|
||||||
Screen_top_line = Cursor_line
|
Screen_top_line = Cursor_line
|
||||||
|
print('scroll up preserving cursor')
|
||||||
Text.scroll_up_while_cursor_on_screen()
|
Text.scroll_up_while_cursor_on_screen()
|
||||||
|
print('screen top after:', Screen_top_line, Top_screen_line_starting_pos)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- move down one screen line in current line
|
-- move down one screen line in current line
|
||||||
|
|
Loading…
Reference in New Issue