parent
a27dd15c1f
commit
00c64ed6e4
4
main.lua
4
main.lua
|
@ -338,7 +338,7 @@ function App.mousepressed(x,y, mouse_button)
|
|||
|
||||
for line_index,line in ipairs(Lines) do
|
||||
if line.mode == 'text' then
|
||||
if Text.in_line(line, x,y) then
|
||||
if Text.in_line(line, x,y, Margin_left, App.screen.width-Margin_right) then
|
||||
-- delicate dance between cursor, selection and old cursor/selection
|
||||
-- scenarios:
|
||||
-- regular press+release: sets cursor, clears selection
|
||||
|
@ -382,7 +382,7 @@ function App.mousereleased(x,y, button)
|
|||
else
|
||||
for line_index,line in ipairs(Lines) do
|
||||
if line.mode == 'text' then
|
||||
if Text.in_line(line, x,y) then
|
||||
if Text.in_line(line, x,y, Margin_left, App.screen.width-Margin_right) then
|
||||
--? print('reset selection')
|
||||
Cursor1 = {line=line_index, pos=Text.to_pos_on_line(line, x, y)}
|
||||
--? print('cursor', Cursor1.line, Cursor1.pos)
|
||||
|
|
|
@ -95,7 +95,7 @@ end
|
|||
function Text.to_pos(x,y, left, right)
|
||||
for line_index,line in ipairs(Lines) do
|
||||
if line.mode == 'text' then
|
||||
if Text.in_line(line, x,y) then
|
||||
if Text.in_line(line, x,y, left, right) then
|
||||
return line_index, Text.to_pos_on_line(line, x,y)
|
||||
end
|
||||
end
|
||||
|
|
4
text.lua
4
text.lua
|
@ -663,9 +663,9 @@ function Text.snap_cursor_to_bottom_of_screen()
|
|||
Text.redraw_all() -- if we're scrolling, reclaim all fragments to avoid memory leaks
|
||||
end
|
||||
|
||||
function Text.in_line(line, x,y)
|
||||
function Text.in_line(line, x,y, left,right)
|
||||
if line.starty == nil then return false end -- outside current page
|
||||
if x < Margin_left then return false end
|
||||
if x < left then return false end
|
||||
if y < line.starty then return false end
|
||||
Text.populate_screen_line_starting_pos(line)
|
||||
return y < line.starty + Line_height*(#line.screen_line_starting_pos - Text.screen_line_index(line, line.startpos) + 1)
|
||||
|
|
Loading…
Reference in New Issue