Vector Brush Range undo issue with creating new frames
Author: manongjohnCreated Jan 28, 2020Updated Sep 10, 2026
Labelsbug
Issue Summary
I've encountered some issues when undo/redoing a Vector Brush Range action when you either start with an empty cell then draw on an exposed cell, vice versa or if you start and end on empty cells.
Basically when drawing start and end frames where both frames already exist, undo/redo works fine. When drawing starting and end frames but one or both of them starts of empty, the newly created frame when you start drawing either is not undoable or it deletes all the frames the interpolation is drawn on.
Steps to Reproduce
OT 1.3 Example - Starting frame is empty:
- Create a new Vector level with 5 frames with different drawings
- Expose Level Frames 1, 3-5 in Xsheet Frames 1, 3-5 respectively. Leave Frame 2 empty
- Change Vector Brush Range to Linear
- Draw 1st shape in Xsheet Frame 2 (empty) -> Creates and exposes Level Frame 2a
- Draw 2nd shape in Xsheet Frame 5 -> Interpolation drawn between 2, 2a, 3-5
- Undo -> Interpolation is undone. 2a remains
- Undo -> 2a remains exposed. Whatever action was performed before the creation of 2a is undone
- Keep undoing -> 2a remains, all other actions are undone.
- In 1.4rc this is especially worse because instead of 2a being created, the existing frame are renumbered and a new Frame 2 is created. The renumber never gets undone and further undo/redo action are now being applied to the wrong frames.
Example - Ending frame is empty
- Create a new Vector level with 5 frames with different drawings
- Expose Level Frames 1-5 in Xsheet
- Change Vector Brush Range to Linear
- Draw 1st shape in Xsheet Frame 2
- Draw 2nd shape in Xsheet Frame 6 (empty) -> Frame 6 created. Interpolation drawn between 2-6
- Undo -> Frames 2-6 are permanently deleted. (Dev note: This is likely because the m_isFrameCreated = true is being carried through the drawing of the interpolation on existing frame when it should only apply to the newly created frame and false everywhere else)
As Guided Drawing uses the Range logic, it also suffers from these issues.
Source: opentoonz/opentoonz