pcb-rnd knowledge pool
What should be undoable?
undoability by Tibor 'Igor2' Palinkas on 2019-05-23
Tags: insight, undo
The generic rule
Changes that do not make data change on the board are generally not undoable.
Examples of what is undoable
The ones marked with * may not yet be undoable but should be.
- creating or deleting drawing primitives on the board
- changing geometry of drawing primitives on the board
- changing metadata of drawing primitives on the board
- changing board metadata (e.g. size, name)
- routing style changes (*)
- layer stack changes (*)
Examples of what is not undoable
- changes made to paste buffers: those are not board data
- crosshair coordinate, style
config setting changes, including but not limited to:
- grid settings
- GUI related settings (e.g. compact layout)
- fonts loaded/unloaded to/from the board
Cases that may look strange
- selection changes are undoable because selection is stored in object flags which is covered by "metadata of drawing primitives".
- some of the config is saved in the board (the design role) - changes in such config will mark the board changed and saving the board may cause a diff, but they are not undoable because config changes are generally not undoable