3. Undoing
Almost anything you do to an image in GIMP can be undone. You can undo the most recent action by choosing Edit → Undo from the image menu, but this is done so frequently that you really should memorize the keyboard shortcut, Ctrl+Z.
Undoing can itself be undone. After having undone an action, you can redo it by choosing Edit → Redo from the image menu, or use the keyboard shortcut, Ctrl+Y. It is often helpful to judge the effect of an action by repeatedly undoing and redoing it. This is usually very quick, and does not consume any extra resources or alter the undo history, so there is never any harm in it.
Caution | |
---|---|
If you undo one or more actions and then operate on the image in any way except by using Undo or Redo, it will no longer be possible to redo those actions: they are lost forever. The solution to this, if it creates a problem for you, is to duplicate the image and then test on the copy. ( Do Not test the original, because the undo/redo history is not copied when you duplicate an image.) |
If you often find yourself undoing and redoing many steps at a time, it may be more convenient to work with the Undo History dialog, a dockable dialog that shows you a small sketch of each point in the Undo History, allowing you to go back or forward to that point by clicking.
Undo is performed on an image-specific basis: the “Undo History” is one of the components of an image. GIMP allocates a certain amount of memory to each image for this purpose. You can customize your Preferences to increase or decrease the amount, using the System Resources page of the Preferences dialog. There are two important variables: the minimal number of undo levels, which GIMP will maintain regardless of how much memory they consume, and the maximum undo memory, beyond which GIMP will begin to delete the oldest items from the Undo History.
Note | |
---|---|
Even though the Undo History is a component of an image, it is not saved when you save the image using GIMP‘s native XCF format, which preserves every other image property. When the image is reopened, it will have an empty Undo History. |
GIMP’s implementation of Undo is rather sophisticated. Many operations require very little Undo memory (e.g., changing visibility of a layer), so you can perform long sequences of them before they drop out of the Undo History. Some operations, such as changing layer visibility, are compressed, so that doing them several times in a row produces only a single point in the Undo History. However, there are other operations that may consume a lot of undo memory. Most filters are implemented by plug-ins, so the GIMP core has no efficient way of knowing what changed. As such, there is no way to implement Undo except by memorizing the entire contents of the affected layer before and after the operation. You might only be able to perform a few such operations before they drop out of the Undo History.
3.1. Things That Cannot be Undone
Most actions that alter an image can be undone. Actions that do not alter the image generally cannot be undone. Examples include saving the image to a file, duplicating the image, copying part of the image to the clipboard, etc. It also includes most actions that affect the image display without altering the underlying image data. The most important example is zooming. There are, however, exceptions: toggling QuickMask on or off can be undone, even though it does not alter the image data.
There are a few important actions that do alter an image but cannot be undone:
Closing the image
The Undo History is a component of the image, so when the image is closed and all of its resources are freed, the Undo History is gone. Because of this, unless the image has not been modified since the last time it was saved, GIMP always asks you to confirm that you really want to close the image.
Reverting the image
“Reverting” means reloading the image from the file. GIMP actually implements this by closing the image and creating a new image, so the Undo History is lost as a consequence. Because of this, if the image is unclean, GIMP asks you to confirm that you really want to revert the image.
“Pieces” of actions
Some tools require you to perform a complex series of manipulations before they take effect, but only allow you to undo the whole thing rather than the individual elements. For example, the Intelligent Scissors require you to create a closed path by clicking at multiple points in the image, and then clicking inside the path to create a selection. You cannot undo the individual clicks: undoing after you are finished takes you all the way back to the starting point. For another example, when you are working with the Text tool, you cannot undo individual letters, font changes, etc.: undoing after you are finished removes the newly created text layer.
Filters, and other actions performed by plugins or scripts, can be undone just like actions implemented by the GIMP core, but this requires them to make correct use of GIMP’s Undo functions. If the code is not correct, a plugin can potentially corrupt the Undo History, so that not only the plugin but also previous actions can no longer properly be undone. The plugins and scripts distributed with GIMP are all believed to be set up correctly, but obviously no guarantees can be given for plugins you obtain from other sources. Also, even if the code is correct, canceling a plugin while it is running may corrupt the Undo History, so it is best to avoid this unless you have accidentally done something whose consequences are going to be very harmful.