User Experience/ContextualUndo

From Apache OpenOffice Wiki
Jump to: navigation, search


Quick Navigation




Documentation note.png This page is intended to outline a new idea. Please rate it or add your own thoughts in rating and comments.

Idea Summary

The central idea of "Contextual Undo" is to let the user revert changes in a certain part of the document only. Thus, it overcomes the basic limitation of the conventional undo functionality which basicly is a linear list for "editing steps" for the whole document.


Productivity software like provides different functionality to revert changes in a document. A very common one is "undo" which enables the user to revert changes of the current document editing session step-by-step. When looking on the following - rather simple - document workflow, then we'll now focus on the step "Modify".

SimplifiedWorkflow Modify.png
Let's first have a look how the today's "undo" functionality is presented to the user. The following screenshot, which shows the expanded "undo" drop-down in the standard toolbar, will be used to explain the behavior.
The expanded "undo" drop-down in the standard toolbar
The current "undo" functionality ...
  • ... provides a list of editing actions in reversed order (e.g. "Insert graphics" was the last one)
  • ... is rather independent of the kind of actions (e.g. typing, inserting, deleting)
  • ... already merges 'atomic' steps into more logical larger ones (e.g. typed words instead of single letters)
  • ... helps the user by showing the number of actions to be undone (e.g. "Actions to undo: 5")
  • ... has only a limited number of actions to be undoable (see Tools -- Options -- -- Memory -- Undo)
  • ... is a document-centric functionality and therefore e.g. available in the standard toolbar

There are many little things to be improved with regard to the "undo" functionality, but at the moment the very last last statement - being document-centric - is the one to be adressed. Thus, you may have noticed that the user (you?!) can only undo his actions step-by-step. Even if the user choses to go back five steps, then executes "undo" five times one after another. It is impossible to only revert one step (or a series of actions) which has been applied in the past.

Goal: The user is able to simply revert changes to a certain element in the document without affecting the other changes made during the document editing session.

Use Cases

Use Case 1: Reverting Unwanted Changes in a Calc Sheet

Sara uses an Calc spreadsheet document to do her private accounting. The information is spread among different sheets, so she works on some parts of the document. Unfortunately, she made some little mistake in the one sheet she worked on several minutes ago. Since she doesn't want to loose all her work, so she decides to use the "contextual undo" functionality which makes it really easy to revert the changes in the selected sheet. She can continue to work on seamlessly and focus on the topic.

Use Case 2: Reverting Changes of Pasted Content

John works in a large company. His boss requests to create a new presentation which presents the project he currently works on. He collects the related documents - texts, diagrams and graphics - and starts to compose the presentation. To keep the presentation document in a reasonable state, he first adapts the information and formatting in the source documents before pasting the content in the Impress document. For example, he adds some text which better explains the information in the given context and adds it to slide 3. Later he notices that some of the information is somehow doubled on slide 12 - it seems that the current source document already contained it. Thus, he wants to revert the changes on slide 3 with "contextual undo". Luckily, keeps the full editing history of the text which has been pasted and so he simply reverts some of the text changes without affecting the rest of the document. He is happy that this saved some time, since his boss needs the presentation in less than one hour.

Use Case 3: Working on the Bachelor Thesis

Michael works on his bacholor thesis in Writer. Since he lacks a bit concentration today, he jumps back and forth in the document and works on different sections. After a break, he briefly scans the changes made to the document and wants to revert some text he worked on some hours ago. He selects the modified paragraphs and executes the "contextual undo" - he browses the history of the changes and reverts all the unwanted changes with one click.

Detailed Description

Please note: The following description does not consider the feasability of the implementation. It is likely that the technical realization will be very hard work for the developers.

Draft Mockups (Only to Communicate the Idea)

The following mockups are only meant to communicate the basic idea. It is not intended to show the final functionality. However, if you have any problems how to improve the interaction design, then please add comments or add own mockups. Thanks!

ContextualUndo Mockup Calc.png

Mockup showing the "contextual undo" for an Calc sheet.

Some initial ideas for an advanced version:

  • Overlay window highlights the document parts (cell range) for contextual undo (the remaining document is dimmed)
  • Time-slider allows to "scroll" through the undo history
  • A graphic effect highlights the position of the change (here: the yellow box which might fade away after a short period of time)
ContextualUndo Mockup Impress.png

Mockup showing the "contextual undo" for an Writer document

Some initial ideas for a simple version:

  • Overlay window highlights the document parts (text box) for contextual undo (the remaining document is dimmed)
  • Conventional toolbar icons (undo, redo) are used to access the undo history
  • The number of undo actions is shown (maybe this isn't too helpful)


The Document Check functionality ...

  • ... should provide access to the editing history of desired objects
  • ... may also consider the history of pasted document elements (e.g. inserting already modified slides from another document)
  • ... add your idea

Further Thoughts

  • The functionality is somehow related to the "Change Tracking" feature which records changes which can be reversed (considers only "one" change for a given baseline)
  • The functionality is somehow related to the "Action Refinement" functionality which lets the user revert automatic changes by "AutoCorrect"
  • The current naming "Contextual Undo" is preliminary and may change

See Also

(Time based history, to be written soon...)

Rating and Comments


Please rate the idea itself and not the mockup visualization. {{#jskitrating:title=UX Idea: Contextual Undo|notop|path=/UX_Idea/ContextualUndo|view=combo|noscript=false|starColor=blue}}


Please add your comments below or on the talk page.

It seems to excessively complicate the essential and most basic function of 'undo', working with the program would likely become unpleasantly burdensome. What specific problem does this aim to solve? Do you mean having a full list of changes and being able to selectively roll back any individual changes or group of changes arbitrarily early on in the change history? Larsnooden 14:37, 1 February 2010 (UTC)

Personal tools