IWYLK45KJSPRXKW55OD4GEPMLTYMMTXNFJJU26JTZN3RE35DWSCQC
EMHRPJ3RAVIVJEQIRXIVDGENV6QHUUGXXRWTJ3BXC7SZNC66VK5QC
J6WEC2D6QSURWOJZB4YRTXQQAHFPAAEL55OPQU4ZH6M6LUKYJPJAC
4VKEE43Z7MUPNIAOCK36INVBNHRTSWRRN37TIKRPXPH3DRKGHHAQC
LXTTOB33N2HCUZFIUDRQGGBVHK2HODRG4NBLH6RXRQZDCHF27BSAC
5L7K4GBDEAFH44LMLNKVFMHLWDNXXBKRPEI347VE5ZLXVFSMD2FAC
BULPIBEGL7TMK6CVIE7IS7WGAHGOSUJBGJSFQK542MOWGHP2ADQQC
IMEJA43L3OX7S5KIYLZJ4F3ITACLAA5SZBHSCIJMULCPRSW7LXBAC
end
function test_click_past_end_of_word_wrapping_line()
io.write('\ntest_click_past_end_of_word_wrapping_line')
-- display a long line wrapping at a word boundary on a screen of more realistic length
App.screen.init{width=200, height=80}
-- 0 1 2
-- 123456789012345678901
Lines = load_array{'the quick brown fox jumped over the lazy dog'}
Line_width = 160
Cursor1 = {line=1, pos=1}
Screen_top1 = {line=1, pos=1}
Screen_bottom1 = {}
App.draw()
local y = Margin_top
App.screen.check(y, 'the quick brown fox ', 'F - test_click_past_end_of_word_wrapping_line/baseline/screen:1')
y = y + Line_height
-- click past the end of the screen line but within Line_width
App.draw()
App.run_after_mouse_click(Line_width-2,y-2, 1)
-- cursor moves to end of screen line
check_eq(Cursor1.pos, 20, 'F - test_click_past_end_of_word_wrapping_line/cursor')
function Text.screen_line_width(line, i)
local start_pos = line.screen_line_starting_pos[i]
local start_offset = Text.offset(line.data, start_pos)
local screen_line
if i < #line.screen_line_starting_pos then
local past_end_pos = line.screen_line_starting_pos[i+1]
local past_end_offset = Text.offset(line.data, past_end_pos)
screen_line = string.sub(line.data, start_offset, past_end_offset-1)
else
screen_line = string.sub(line.data, start_pos)
end
local screen_line_text = App.newText(love.graphics.getFont(), screen_line)
return App.width(screen_line_text)
end