On Sat, Jun 13, 2009 at 12:37:38AM +0200, JimmyVolatile wrote:
Previous example expressed using numbers:
- User performs 10 undos, (-10) he's now at undo history step -10.
- User performs 2 redos. (+2) He's now at undo history step -8. The entire
history is still there as usual. 3. User performs some operation. Normally this would wipe history step -8 through step 1 so the user can not at any time redo those steps. What I'm Felipe is suggesting is that, even if you do at least one operation, the original step -8 through step 1 are kept. As the user performs the operation he would be at history step 1-A of a new history branch. 4. Now, if the user performs a number of undos that brings him back to any history step on or before the -8 (branching) step, the oldest history takes priority again. 5. User finally performs 8 ( or more) redos. He's now back at the original history step 1 (not 1-A).
In other words*: You could undo 10 times, then (accidentally) perform a new operation, then still be able to press undo and then, finally, press redo 10 times to bring you back to where you started.
I think that would confuse people unless you're very explicit with which path you're following; maybe another example would be better, you draw some picture and make a little mistake so undo once, you then carry on and want to go back and see where you came from. You keep hitting undo until you reach somewhere that you remember and this just happens to be one before your little mistake before you hit redo again to go back to where you were and all your work disappears and you go into your little mistake again.
(I think the level of intrusiveness could be kept very low if, like mentioned earlier, the number of new operations allowed before deleting "original future history steps" is kept down to maybe only 1 "new/branching" operation. Like Felipe points out, it saves you from those awkward moments of deleting all the future redo-steps while at the same time, it would remain totally invisible to all users performing more than 1 "new/branching" operation.
Arbitrary limits like this bad; the reason we have multiple undo levels is because what a computer considers to be a single operation normally isn't when you're the user.
Sorry if I'm being unclear.
Welcome to the joys of email! :)