about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-06-10 11:45:53 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-06-10 11:45:53 -0700
commit79a12413700dca5816d6c27fc4951bdd7579e329 (patch)
tree0c49c32a68c411320a7f65ce8bf323a9b1679d73
parentfcacb6e63d1aefd7aedc858e6efa39d8102eb6ba (diff)
downloadtext.love-79a12413700dca5816d6c27fc4951bdd7579e329.tar.gz
undo creating new drawings
-rw-r--r--main.lua4
-rw-r--r--undo.lua5
2 files changed, 8 insertions, 1 deletions
diff --git a/main.lua b/main.lua
index 7be15cf..53751bb 100644
--- a/main.lua
+++ b/main.lua
@@ -219,11 +219,13 @@ function App.draw()
         button('draw', {x=4,y=y+4, w=12,h=12, color={1,1,0},
           icon = icon.insert_drawing,
           onpress1 = function()
-                       Drawing.before = snapshot()
+                       Drawing.before = snapshot(line_index-1, line_index)
                        table.insert(Lines, line_index, {mode='drawing', y=y, h=256/2, points={}, shapes={}, pending={}})
                        if Cursor1.line >= line_index then
                          Cursor1.line = Cursor1.line+1
                        end
+                       save_to_disk(Lines, Filename)
+                       record_undo_event({before=Drawing.before, after=snapshot(line_index-1, line_index+1)})
                      end})
           if Search_term == nil then
             if line_index == Cursor1.line then
diff --git a/undo.lua b/undo.lua
index 2513632..3007070 100644
--- a/undo.lua
+++ b/undo.lua
@@ -42,6 +42,11 @@ function snapshot(s,e)
   elseif e == nil then
     e = s
   end
+  assert(#Lines > 0)
+  if s < 1 then s = 1 end
+  if s > #Lines then s = #Lines end
+  if e < 1 then e = 1 end
+  if e > #Lines then e = #Lines end
   -- compare with App.initialize_globals
   local event = {
     screen_top=deepcopy(Screen_top1),