[Bf-committers] Proposal to exclude tool settings from Global/Mesh Undo

Dima Glibitsky dima.glib at gmail.com
Sun Nov 27 10:22:12 CET 2011

In most of the cases, changes to ToolSettings push undo stack, which
has the following impact on workflow:

1) To undo/redo meaningful changes to scene contents, user often has
to go through a number of steps that don't change anything in scene
("meaningless" steps from the user's point of view). In such cases,
the side-effect of changing tool settings on the way is usually
undesirable and even hindering.
2) Another bad side-effect is that any change to tool settings makes
it impossible to redo currently undone actions.

In short, users are focused on content manipulation, so
non-content-related history pushes usually just get in the way and
unnecessarily pollute undo history.

I suggest that in this concern Blender should behave similarly to
other applications (e.g. GIMP), where each undo history step is
related to the actual modification of content.

3) On the other hand, sometimes it is convenient to have a history of
some (e.g. brush) settings. To be more specific, these are colors and
slider-regulated properties, such as Weight, Radius, Strength, Jitter,
and so on (because it takes more effort to set them precisely).
However, even in this case they should have a separate history -- of
the "recently used" type, like Colors history in MyPaint.

Actually, there are already precedents of non-undoable/redoable tool
settings. Besides the 3D cursor (though it's not in ToolSettings, it's
still separate for each scene), they include:
- ToolSettings.use_grease_pencil_settings
- ToolSettings.edge_path_mode
- ToolSettings.edge_path_live_unwrap
- ToolSettings.normal_size
Even though they push undo stack, they do not change on undo/redo.
Maybe there are others as well, I didn't check each of them.

So, summing up, the proposal is the following:
- Changes to ToolSettings shouldn't be recorded in Global/Mesh Undo
history, and shouldn't change on Undo/Redo. This may be as well
generalized to other settings that don't modify the content (e.g.
display settings, like Mesh.show_all_edges or
- Introduce "recently used" option for Color & slider-regulated
properties. For example, there could be a submenu with recent values
available when right-clicking on the slider/color.

I have also noticed that some Mesh parameters don't change on Undo/Redo too:
- Mesh.use_mirror_x
- Mesh.use_mirror_topology
- Settings in Mesh Display panel
However, use_mirror_x and use_mirror_topology are undoable/redoable in
Weight Paint mode (perhaps there is a bug?). As for Mesh Display
settings, I think it would be logical to make them not push undo stack

More information about the Bf-committers mailing list