a bug I've never run into

The previous commit was failing inside a test that I can't reproduce
manually. Perhaps it's something about how often draw/update run in
practice. Anyways, it's definitely uncovered a real issue.
This commit is contained in:
Kartik K. Agaram 2022-07-13 08:38:07 -07:00
parent 6659de60f3
commit 22ad5373c5
3 changed files with 10 additions and 5 deletions

View File

@ -241,9 +241,6 @@ function Drawing.update(State)
if State.lines.current_drawing == nil then return end
local drawing = State.lines.current_drawing
assert(drawing.mode == 'drawing')
if drawing.y == nil then
return -- first draw?
end
local pmx, pmy = App.mouse_x(), App.mouse_y()
local mx = Drawing.coord(pmx-State.left, State.width)
local my = Drawing.coord(pmy-drawing.y, State.width)

View File

@ -643,6 +643,7 @@ function test_undo_name_point()
check_eq(p2.y, 36, 'F - test_undo_name_point/baseline/p2:y')
check_nil(p2.name, 'F - test_undo_name_point/baseline/p2:name')
check_eq(#Editor_state.history, 1, 'F - test_undo_name_point/baseline/history:1')
--? print('a', Editor_state.lines.current_drawing)
-- enter 'name' mode without moving the mouse
edit.run_after_keychord(Editor_state, 'C-n')
edit.run_after_textinput(Editor_state, 'A')
@ -650,6 +651,7 @@ function test_undo_name_point()
check_eq(p2.name, 'A', 'F - test_undo_name_point/baseline')
check_eq(#Editor_state.history, 3, 'F - test_undo_name_point/baseline/history:2')
check_eq(Editor_state.next_history, 4, 'F - test_undo_name_point/baseline/next_history')
--? print('b', Editor_state.lines.current_drawing)
-- undo
edit.run_after_keychord(Editor_state, 'C-z')
local drawing = Editor_state.lines[1]

View File

@ -352,7 +352,10 @@ function edit.keychord_pressed(State, chord, key)
State.cursor1 = deepcopy(src.cursor)
State.selection1 = deepcopy(src.selection)
patch(State.lines, event.after, event.before)
Text.redraw_all(State) -- if we're scrolling, reclaim all fragments to avoid memory leaks
-- invalidate various cached bits of lines
State.lines.current_drawing = nil
-- if we're scrolling, reclaim all fragments to avoid memory leaks
Text.redraw_all(State)
schedule_save(State)
end
elseif chord == 'C-y' then
@ -364,7 +367,10 @@ function edit.keychord_pressed(State, chord, key)
State.cursor1 = deepcopy(src.cursor)
State.selection1 = deepcopy(src.selection)
patch(State.lines, event.before, event.after)
Text.redraw_all(State) -- if we're scrolling, reclaim all fragments to avoid memory leaks
-- invalidate various cached bits of lines
State.lines.current_drawing = nil
-- if we're scrolling, reclaim all fragments to avoid memory leaks
Text.redraw_all(State)
schedule_save(State)
end
-- clipboard