I'm developing a graphical engineering application for desktop environments. As of today the application uses mostly non-modal dialogs that immediately commit the changes to the selected object. So the user can see the effects of the changes he made. In some cases it would be helpful if the user could undo these changes.

I'm seeking advice on how to best implement this from a UX point of view.

My ideas so far:

  1. Add a "reset" button that replaces the current state with a saved state? But what point in time should be considered the last "correct" state?
  2. Use the application's undo functionality? Every applied state of the dialog could be saved to the undo queue. But that doesn't seem to be very obvious to the user because he'd have to jump out of the dialog to perform that undo.
  3. Add a "cancel" button that restores the state of the objects when the dialog was opened and closes the dialog? This would be very similar to a modal dialog. So:
  4. Forget the idea of non-modal dialogs when rolling back complex changes is required?

Personally I'm leaning toward option 1 and use the object's state when it was selected as the good state.

  • What do you mean by "non-modal dialog"? I'm trying to picture what you're describing, but I'm unsure what you mean. Sometimes these terms are used to mean many different things, so perhaps a picture or a wireframe would be of great help. Commented Jul 7, 2017 at 14:22
  • See modeless on Wikipedia. The dialog box is opened and can be left open as long as the user wishes. Changes he makes in the dialog are immediately performed on an object in the application's main window.
    – M. Fischer
    Commented Jul 7, 2017 at 15:30
  • As I cannot assume my users to be tech savy I'll avoid keyboard shortcuts. So using 'Undo' combining a visible undo and a keyboard shortcut is the way to go for me.
    – M. Fischer
    Commented Aug 27, 2017 at 7:31

2 Answers 2


Who are you designing for? If your users are tech savy. I would recommend just adding keyboard shortcuts like ctrl + z / cmd + z. (Even if they are not tech savy, keyboard shortcuts is universal) Just like you point out, they need to be able to control the "correct" state. In my opinion keyboard shortcut is more intuitive.

  • To add to this consider onboarding/tooltips/tips to inform users that they can actually undo with ctrl+z. In terms of accessibility also consider having a visible undo option (within the view) available for users to click on to return to the last available change. Commented Aug 15, 2017 at 20:31

You're saying that your users would not know that if they close a dialogue box that the undo feature would not immediately make them think it would undo that last change? If so I disagree, this is the universal understanding of undo.

Now, if your concern is that you want the user to be able to undo states that are out of order, similar the photoshops history panel, then you should create this experience for them, however this is not intuitive at all and will be needless overhead on your product, this is why we don't see this history undo feature in all designs tools.

I disagree with the keyboard solution. Yes, this works for tech savvy people but why limit yourself? Also as a tech savvy person I make the assumption it does not work in any software other than office 365, whether that a good assumption or not, the point is I am tech savvy yet I wouldn't know about ctrl+z

I always fall back on universal patterns. You most likely have a utility bar, implement the pattern of undo, redo and save (unless you auto save).

I see this everywhere, Office 365, UX Pin, Adobe Products, YNAB.com, Invision, Sketch.

Implementing Ctrl+Z is still a viable solution but not means to an end.

enter image description here enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.