Bug 319516

Summary: Cumulative Undo/Redo
Product: [Applications] krita Reporter: Eiko Yumi <esdouzewa>
Component: GeneralAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: wishlist CC: halla
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Other   
OS: All   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Eiko Yumi 2013-05-08 11:28:02 UTC
This is a feature request for an improved Undo/Redo function, especially useful for digital artists.

I will tentatively call it "Cumulative Undo/Redo". The main operation principle of this is very simple: when drawing consecutive strokes with a brush-based tool, such strokes are regarded as a single one for the undo system and therefore when calling the Undo command, they will be undone at the same time.

* Rationale for this:

- When painting/drawing, "strokes" are often intended more like "actions, gestures" composed of several smaller sub-strokes drawn in quick succession, closely spaced together. In the artist's mind it is usually more of interest to undo the entire gesture at once rather than individual sub-strokes.

- By cramming together more sub-strokes that are part of the same intended "action", more undo slots are freed up, making the undo stack more efficiently used.


* When are consecutive strokes actually treated as consecutive?

Due to difference in drawing/painting styles and personal preferences, this could be a selectable setting which could for example range from 0 to 1000 milliseconds. Setting this at 0 milliseconds would effectively disable this option (it would imply that as soon as a stroke is finished, it is considered a complete "action/gesture".


* Are there other drawing/painting applications which already use this?

As far as I know, yes. MyPaint uses it, but it's not configurable. MangaStudio 5 ( commercial software) also uses it, and allows users to configure the consecutive stroke time threshold.

Reproducible: Always
Comment 1 Eiko Yumi 2013-05-08 22:52:15 UTC
Addendum: when drawing many sub-strokes in quick succession for an extended period of time, it can be desirable to break them down in smaller groups even though they are part of the same "drawing action", so that executing the undo command won't require to start all over again. The feature request above could therefore be expanded with an internal timer which starts a new "drawing action" IF a certain amount of time passes after the first stroke of a series of consecutive strokes gets painted. This, of course, could be user-configurable to suit different needs.
Comment 2 Halla Rempt 2013-06-21 11:26:05 UTC
Hm, yes. This would be interesting to make, if it can be made configurable. Qt already offers support for collapsing undo actions, so we could actually implement it.
Comment 3 Halla Rempt 2014-12-06 10:17:54 UTC
Mohit implemented this for his summer of code project.