From 2ea683f4f28f4e983a949a9ef57e1a52f54f76ca Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Mon, 16 May 2022 22:24:24 -0700 Subject: stop handling drawings in cursor_pos computations --- main.lua | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/main.lua b/main.lua index 52e755b..26f0b81 100644 --- a/main.lua +++ b/main.lua @@ -559,15 +559,23 @@ function keychord_pressed(chord) cursor_pos = #lines[cursor_line].data+1 elseif chord == 'up' then if cursor_line > 1 then - local old_x = cursor_x(lines[cursor_line].data, cursor_pos) - cursor_line = cursor_line-1 - cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos) + if lines[cursor_line].mode == 'text' then + local old_x = cursor_x(lines[cursor_line].data, 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 elseif chord == 'down' then if cursor_line < #lines then - local old_x = cursor_x(lines[cursor_line].data, cursor_pos) - cursor_line = cursor_line+1 - cursor_pos = nearest_cursor_pos(lines[cursor_line].data, old_x, cursor_pos) + if lines[cursor_line].mode == 'text' then + local old_x = cursor_x(lines[cursor_line].data, 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 elseif chord == 'delete' then if cursor_pos <= #lines[cursor_line].data then @@ -722,14 +730,12 @@ function keychord_pressed(chord) end 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 text_before_cursor = love.graphics.newText(love.graphics.getFont(), line_before_cursor) return text_before_cursor:getWidth() end function nearest_cursor_pos(line, x, hint) - if line.mode == 'drawing' then return hint end if x == 0 then return 1 end -- cgit 1.4.1-2-gfad0