about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-16 22:24:24 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-16 22:24:24 -0700
commit2ea683f4f28f4e983a949a9ef57e1a52f54f76ca (patch)
tree96ebeec7c8019c3abdae396eacc8eb1303c2f097
parent3af32571a52fc163d35f3f5e885bdc28a6d066b9 (diff)
downloadlines.love-2ea683f4f28f4e983a949a9ef57e1a52f54f76ca.tar.gz
stop handling drawings in cursor_pos computations
-rw-r--r--main.lua22
1 files 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