diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2022-06-02 15:45:25 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2022-06-02 15:45:25 -0700 |
commit | 670886240f78314b9925e94e1814a8ade5fbaf3e (patch) | |
tree | 9e52827ab930246aa88576007903a0fa11dbafb7 /drawing.lua | |
parent | a9a133e6fb80460ab364e66206a7ffc8f9404b46 (diff) | |
download | view.love-670886240f78314b9925e94e1814a8ade5fbaf3e.tar.gz |
after much struggle, a brute-force undo
Incredibly inefficient, but I don't yet know how to efficiently encode undo mutations that can span multiple lines. There seems to be one bug related to creating new drawings; they're not spawning events and undoing past drawing creation has some weird artifacts. Redo seems to consistently work, though.
Diffstat (limited to 'drawing.lua')
-rw-r--r-- | drawing.lua | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drawing.lua b/drawing.lua index 6b5b6c2..f3433a0 100644 --- a/drawing.lua +++ b/drawing.lua @@ -206,6 +206,7 @@ function Drawing.in_drawing(drawing, x,y) end function Drawing.mouse_pressed(drawing, x,y, button) + Drawing.before = snapshot_everything() if Current_drawing_mode == 'freehand' then drawing.pending = {mode=Current_drawing_mode, points={{x=Drawing.coord(x-16), y=Drawing.coord(y-drawing.y)}}} elseif Current_drawing_mode == 'line' or Current_drawing_mode == 'manhattan' then @@ -347,6 +348,7 @@ function Drawing.mouse_released(x,y, button) end end save_to_disk(Lines, Filename) + record_undo_event({before=Drawing.before, after=snapshot_everything()}) end function Drawing.keychord_pressed(chord) |