Tag Info

Hot answers tagged

78

Trust me when I say this - undo/redo is one of the biggest implementation, testing and maintenance headaches in any significantly sized application. Granted, it is a wonderful thing to be able to undo/redo something as it relaxes the user and lets them test and explore their environment without worry. However, the usefulness of an undo history starts to ...


9

I like how Amazon handles deletion of items from a wishlist: Edit: A little explanation... Deleted items are replaced with an undo command where the item used to be, which keeps the users' context intact (unlike Google's notify bar or a global "undo" button on the other side of the screen). It is no confirmation box, modal or otherwise, to get in the ...


7

Does the application have a general undo function? If no: why would you like to have an "undo selection" possibility? It does not make sense to have an undo option for a selection while at the same time you would not have an undo for things that are in fact irreversible, like for instance the actual firing of the employees itself. I admit that having to ...


7

A quick search of the Adobe site shows the reasoning for this - albeit for CS5 but I would imagine the reasoning is still the same. (emphasis mine): By default, the Photoshop History panel retains only the last 20 actions. This is a compromise, striking a balance between flexibility and performance. You can change the number of levels in the History ...


7

every once in a while I wish photoshop or word had such functionality, On the other hand like you said I often press control-z until it stops. Another issue is performance. Think a draft word document being passed around and edited for weeks. It would be huge! and take forever to load. Yet another issue is privacy. I don't want people to see what steps I ...


7

There are both technical and business drivers for this problem. Technically, undo/redo is very complex to implement for an application of any reasonble complexity. Not only does it need to handle the complexity of the app, but it requires tracking of state over time and the ability to reset that state. In some application spaces, notably graphical ...


7

I would prefer versioning like e.g. Google Docs offers. You can jump between different versions of your document and revert to any of it. In my opinion this is often a more useful approach, although it might not be reasonable for all kind of applications to keep a complete history of changes.


7

One example of such an application is IntelliJ IDEA (and some other programming environments). In addition to the usual project-specific external revision control, IDEA has a user-specific local history which saves a revision of every file on every save (the history is stored inside the user's home directory). The old revisions are stored by default for 3 ...


6

It seems to me that you don't want undo/redo, but file versioning, or revision control. (I don't know about Photoshop, but Word has this feature, disabled by default).


6

I like the google mail behaviour. It shows an undo popup: Strike through (and a "Clear completed tasks" action) is a good (and common) solution for todo lists too.


5

Part of the decision is the amount of memory used per undo. In a large, complex application such as Photoshop, there is a large amount of state that is restored in an Undo operation. In a web browser such as Chrome, on the other hand, the only state required is the address, and in some cases form data; this state is maintained anyway (browser history), so ...


5

The book Design Patterns outlines how to implement undo/redo functionality (see the Command Pattern). It's a slick design, it'd be easy to test, and having unlimited undo's probably wouldn't be much of a problem. However, it comes at the cost of designing your entire system around the pattern and undo/redo looks like it might become incredibly difficult ...


4

Because your RAM is limited :-) P.S - I know you have 8 GB of RAM today but still if you are using applications like Adobe Photoshop or perhaps 3D software, which save a lot of information if you have significant amount of changes, then this can be a huge resource hog.


4

The only think I can think of is that you don't have a delete option as the first item on the context menu. So you'd have something like this: -> Safe Option Delete Redact Obliterate This way if they'll have to move the mouse onto one of the dangerous delete options and click. While not foolproof it would reduce the chance of accidental ...


4

I would argue that it's a question of the current view. By that I mean that you should have at least 2 different views. Namely: 1) Incomplete / ToDo 2) Complete / Done Then marking a task as done merely moves it away from the Incomplete / ToDo view. So then in the complete / Done view, you simply show the item with a check mark next to it, and strike ...


4

Case 1: You do not have a timer and the notification stays till it is manually dismissed. There is nothing wrong what-so-ever with this approach. You display a message for undoing and it stays till the user has read and consciously dismissed it. Great persistent feedback and lesser chance of missing it even if you are distracted somewhere for a while. The ...


4

I don't think to many undos will be a problem. If I nudge (pixel move) a selection in Photoshop, I would like to undo (and redo) in the same detailed level. If I have to push CTRL+Z (or Command+Z) 20 times - that's not a problem. So. Push to undo-stack whenever: Mouse up (from the slider). The slider might have been moved a back and forth a lot with ...


3

Whichever method you finally use, keep in mind the opposite case, i.e. when the user does really want to mark the task as completed: which of the methods would imply less confusion/annoyance to a user really wanting to mark that task as "Done"? The answer to this question is the answer to your question.


3

I have seen the following in a UI guide for a similar situation. What if you make your select all a three-state checkbox: Checked: all items are selected Unchecked: no items are selected Grey (mixed): some items are selected You can only get into the grey state by manually (de) selecting one or more items from the list. The select all checkbox is ...


3

It seems a great question for the first time, but if you think a bit you will realise the problem is with your wireframe, because 'select all' should always be on the top. I just want to point it out, if you put 'select all' to the top of the list - just like in all applications - there will be no need for the function you are asking for! Generally you ...


3

At the risk of rambling - here's a few thoughts. The first thing to decide is whether you want traditional system wide undo in a historical format or whether you want a more localized per-node undo context. It's the system wide sequential undo/redo that is the root of many problems. For example, compare editing an image (sequential/historical - ...


3

Non-global item-level undo may not only be considerably easier to implement, as Roger Attrill suggests in his answer, it may have significant usability advantages. The basic architecture is to link each node or other data object with a record of any change made to it (type of action, timestamp, user, relevant field/attribute if applicable). With this, one ...


3

I can see situations where your time based approach would work well, but there are also some problems with it (besides any technical challenges). Most people are used to the standard tree for undo, and with your changing of it, they may become confused as to why it works differently. Undoing something signifies that it was a mistake. With your time based ...


3

Pixelmator, OmniGraffle and many more (Mac) apps name the undo action after the tool that has been used: Undo Crop Undo Selection Undo Smudge Undo Paint Bucket Undo Delete But I also saw "Undo Set ...": The first option in your three examples seem to come closest to what these apps do but if you need to add details like the kind of color you can do ...


2

Perhaps a timeout on undo that defaults to 5 minutes (and may or may not be an editable timeout length)? It would address the very valid concerns that people have here about the value of undo data days/weeks/months later. And it would address the issue brought up here of accidentally closing an application and losing the undo data. And would maintain the ...


2

Proper undo for a complex application is hard to design in as an afterthought, and for many applications it's simply infeasible to implement efficiently in time (i.e. reasonable UI delays) or space (i.e. too much disk or memory storage usage). Video editors come to mind; but for many applications, much or all of the document in memory would need to be saved ...


2

This is not a feature that I've ever seen and neither can recall ever really wished for. The selection is, whether it's checkboxes, objects, text, etc.., very straight forward as it is. This is as long as it is a "simple selection", meaning that it doesn't affect the properties of the items selected. If selection of an item would in some way affect the ...


2

If the action is non destructive (i.e. the user needs to do something else to make use of this selection) then the user can simply reload the page to get back to the previous state. The only time this fails is if the user has changed the existing selection in some way and then clicked select all. If the action is destructive (i.e. the act of selecting does ...


1

The only rationale is performance, however it's best to determine by asking the users what kind of computers they use, and how they use the software to determine how far back you should make the history go. I'd suspect for most modern computers there's no reason why you should not use unlimited undo, with exception of maybe Video editing. In programming we ...


1

@obelia, yes, it seems like implementing undo only will be a wrong strategy, so it should be able to redo all the previously undone actions. In that case I'd say keep it simple with only one (or in some cases zero) undos. Then there could be a single area that would have 1 of 3 kinds of options: undo redo can't undo Again, a single element, ...



Only top voted, non community-wiki answers of a minimum length are eligible