stop handling drawings in cursor_pos computations
This commit is contained in:
parent
3af32571a5
commit
2ea683f4f2
22
main.lua
22
main.lua
|
@ -559,15 +559,23 @@ function keychord_pressed(chord)
|
||||||
cursor_pos = #lines[cursor_line].data+1
|
cursor_pos = #lines[cursor_line].data+1
|
||||||
elseif chord == 'up' then
|
elseif chord == 'up' then
|
||||||
if cursor_line > 1 then
|
if cursor_line > 1 then
|
||||||
local old_x = cursor_x(lines[cursor_line].data, cursor_pos)
|
if lines[cursor_line].mode == 'text' then
|
||||||
cursor_line = cursor_line-1
|
local old_x = cursor_x(lines[cursor_line].data, cursor_pos)
|
||||||
cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos)
|
cursor_line = cursor_line-1
|
||||||
|
cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos)
|
||||||
|
else
|
||||||
|
cursor_line = cursor_line+1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif chord == 'down' then
|
elseif chord == 'down' then
|
||||||
if cursor_line < #lines then
|
if cursor_line < #lines then
|
||||||
local old_x = cursor_x(lines[cursor_line].data, cursor_pos)
|
if lines[cursor_line].mode == 'text' then
|
||||||
cursor_line = cursor_line+1
|
local old_x = cursor_x(lines[cursor_line].data, cursor_pos)
|
||||||
cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos)
|
cursor_line = cursor_line+1
|
||||||
|
cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos)
|
||||||
|
else
|
||||||
|
cursor_line = cursor_line+1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif chord == 'delete' then
|
elseif chord == 'delete' then
|
||||||
if cursor_pos <= #lines[cursor_line].data then
|
if cursor_pos <= #lines[cursor_line].data then
|
||||||
|
@ -722,14 +730,12 @@ function keychord_pressed(chord)
|
||||||
end
|
end
|
||||||
|
|
||||||
function cursor_x(line, cursor_pos)
|
function cursor_x(line, cursor_pos)
|
||||||
if line.mode == 'drawing' then return 0 end
|
|
||||||
local line_before_cursor = line:sub(1, cursor_pos-1)
|
local line_before_cursor = line:sub(1, cursor_pos-1)
|
||||||
local text_before_cursor = love.graphics.newText(love.graphics.getFont(), line_before_cursor)
|
local text_before_cursor = love.graphics.newText(love.graphics.getFont(), line_before_cursor)
|
||||||
return text_before_cursor:getWidth()
|
return text_before_cursor:getWidth()
|
||||||
end
|
end
|
||||||
|
|
||||||
function nearest_cursor_pos(line, x, hint)
|
function nearest_cursor_pos(line, x, hint)
|
||||||
if line.mode == 'drawing' then return hint end
|
|
||||||
if x == 0 then
|
if x == 0 then
|
||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue