• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

Multi Level Undo/Redo

How should multi level undo work?

  • Let me undo/redo from the middle of the list!

    Votes: 0 0.0%
  • Let me undo (or redo) all the actions back to and including the selected item

    Votes: 0 0.0%
  • I wouldn't use multi level undo/redo!

    Votes: 0 0.0%

  • Total voters
    0
  • Poll closed .
Sounds Great!! So I would like to definately change my answer then, Give us as many possble changes as our systems allow please! :D

OK but do you want to do them one at a time or be able to go back and change a whole lot at once?
 
Hi Folks

Jon -
Selectable undo please. :D



My workflow and aims may be bizarre
but I often need to move items aside,
peform a different object move,
then reinstate original item's placement.

My reasons, exactly :D

Thanks Paul!
 
I voted that I would not use multiple level but I am not sure if that is what I think it is.
What George (GDH) said, i.e. being able to undo each action until you come to the point where you made the mistake or want something different, should be sufficient unless you do not intend to add the option of selecting and deleting more nodes at the same time.
 
Multi select, delete and so on should be in the next version. However it is likely that we would treat that as one transaction rather than a whole lot of indovidual ones.

The general point is that at the moment you can only undo one action at a time - the alternatives include being able to undo a number of them at once or undo an action that is not the last one you did.
 
Hi Jon,

In that case I'd say I am in for undoing a number of them at once. (Still not sure if that means multiple or not:))
Not a big deal. It would just make things quicker, nothing else.

Roby
 
or undo an action that is not the last one you did.

How can you undo an action which is not the last one if a later one relies on the action undone? This sounds like a paradox to me.

For instance. You add a node then create a link from that node then undo the action that created the node :confused:
 
How can you undo an action which is not the last one if a later one relies on the action undone? This sounds like a paradox to me.

For instance. You add a node then create a link from that node then undo the action that created the node :confused:

George - your are right - it is fraught with problems and I have not seen a system that allows undoing random earlier actions. It is possible to go through the later actions in the undo stack and find out if the target of the action you want to undo has been involved in later actions. If it has you could stop the undo. The taxi netwprk is the nightmare scenario. Undoing the Add or Delete of a Start, or Helipad might not be so bad. Although if that has subsequently been edited we lose the edit.

So to be clear - we would not be able to undo any random past action where the object was changed in some way by a later action...... FUUUFFFF I need to get a drink....
 
Last edited:
FUUUFFFF I need to get a drink....
Since I have already had my single malt ;)

Can I suggest that scanning the stack just to determine whether a random action might/might not be undone is completely unnecessary.

As you have no doubt realised, you have opened a can of worms. A simple one-by-one undo is more than sufficient.
 
Last edited:
Forgive my un-informed opinion (:D), but it sounds to me that it would be easier for the user to just re-edit whatever specific item they wanted to undo. And it would save the programmer from having to draw up a set of ambiguous rules about what things can be undone independently and what things can't. That just seems like a minefield to me - there are so many variables that would need to be both pre-determined/recognised and understood by the programmer. Surely the easiest answer for "option 1" is for the user to just re-edit the item(s) in question?

I can, however, see that options 2 and 3 are both useful - and should be comparatively straightforward to work out exactly how those functions should work.
 
"For instance. You add a node then create a link from that node then undo the action that created the node".
Well, that is exactly what I mean. Being able to select more than one node for instance, and delete them, would give you the possibility of deleting a whole lot of taxi/apron paths at the same time, wouldn't it?
 
"For instance. You add a node then create a link from that node then undo the action that created the node".
Well, that is exactly what I mean. Being able to select more than one node for instance, and delete them, would give you the possibility of deleting a whole lot of taxi/apron paths at the same time, wouldn't it?

Yes and you will most likely be able to do that but then, of course, if it does not do what you expect you will want to undo the deletes ;)
 
"For instance. You add a node then create a link from that node then undo the action that created the node".
Well, that is exactly what I mean. Being able to select more than one node for instance, and delete them, would give you the possibility of deleting a whole lot of taxi/apron paths at the same time, wouldn't it?
Just for the sake of debate: :D

I'm not sure that is what you mean. Perhaps what you need is just "delete", not "undo"?

I think George is trying to demonstrate a different point: that building such a "undo some random action from the past" type of function is fraught with difficulties in trying to identify the full scope of what actions are compatible with this function and what aren't. Sometimes it will be very hard to make the call on how this function "should" work, and at these trickier and less obvious scenarios, users will have their own differing opinions on what they want from the function.

Perhaps a better example would be this:

Let's say you created one long twy link. Then you joined it up with lots of other links that intersect it. Now, what should happen when I select "undo create long taxiway link"? There is no longer a "long taxiway link" to delete, as the long link no longer exists.

But it would still be possible to programme some sort of response: the programmer could write the code so that it "remembers" which of the short links used to be part of the long link, and delete those. But then you'd have lots of nodes left behind. Or maybe it should delete those nodes as well? But then that would delete other links that may have also been attached to those nodes. Maybe that's what the user would want? Maybe it's not? Maybe for every user that wants it to work one way, there's another user that wants it the other way.

All I can say is, I will genuinely eat my hat if it can be shown that such a function is easy to produce in a way that users will find natural or instinctive to use :stirthepo There, I've laid down the gauntlet! :mischievo :laughing:
 
Last edited:
All I can say is, I will genuinely eat my hat if it can be shown that such a function is easy to produce in a way that users will find natural or instinctive to use There, I've laid down the gauntlet!

Hmmm - I think I am looking the other way ;)

I can see three options (I use Undo as the example but this but for Undo read Redo also):

  • Click the Undo Button and undo the last action;
  • Select an action from a list of past actions and that action and all later actions are undone;
  • Select an action from a list of past actions and that action is undone provided that the object(s) affected by the action being undone have not been changed by any later actions in the list.

This is a very early screenshot of the buttons concerned:

ur1.png
 
Last edited:
Could we not have "right click" on an object and have an "Undo" option?

That would work perhaps for Editing and Moving but not for something like Add or Delete as in at least one case (undo or redo) the object would become invisible. It is an interesting idea though - let me mull it over :)
 
Back
Top