{"id":95,"date":"2007-06-26T17:14:48","date_gmt":"2007-06-27T00:14:48","guid":{"rendered":"http:\/\/www.smallersystems.com\/people\/mar\/blog\/2007\/06\/26\/undoing-undo\/"},"modified":"2007-06-26T17:14:48","modified_gmt":"2007-06-27T00:14:48","slug":"undoing-undo","status":"publish","type":"post","link":"https:\/\/michaelrichmond.net\/blog\/2007\/06\/26\/undoing-undo\/","title":{"rendered":"Undoing Undo!"},"content":{"rendered":"<p>Consistency in the user interface is a vital part of making applications easy to use. Arguably, UI consistency is a significant factor in the oft-repeated ease-of-use provided by MacOS and now OS X. Certainly Apple pushed their User Interface Design Guidelines for many years to foster UI consistency. Unfortunately, software developers occasionally forget about consistency.<\/p>\n<p>In the recent release of the Adobe CS3 Design suite UI consistency has been forgotten in favor of conflating two separate notions of &#8220;undo&#8221; onto a single key-stroke across applications. In Photoshop CS3, the <font style=\"font-variant: small-caps;\">Command-Z<\/font> keystroke performs Undo\/Redo as has been the case in Photoshop in my experience since at least version 2.5.8. However with InDesign CS3, <font style=\"font-variant: small-caps;\">Command-Z<\/font> steps back through the undo list reversing the document through all edits were made. In Photoshop CS3 stepping back through the edit history is performed using <font style=\"font-variant: small-caps;\">Command-Shift-Z<\/font>.<\/p>\n<p>Both types of undo make sense. Both types of undo are necessary in modern applications that keep track of edit histories. The problem here is lack of consistency. This is particularly insidious in a suite of applications that are intended to be used together.<\/p>\n<p>Across the CS3 suite <font style=\"font-variant: small-caps;\">Command-Z<\/font> is used differently depending on current application. In Photoshop CS3, <font style=\"font-variant: small-caps;\">Command-Z<\/font> performs Undo\/Redo for the last user action. Whereas in Illustrator, InDesign, Flash, and Dreamweaver, <font style=\"font-variant: small-caps;\">Command-Z<\/font> is used to step back through the edit history. In each application, <font style=\"font-variant: small-caps;\">Command-Shift-Z<\/font>, <font style=\"font-variant: small-caps;\">Command-Option-Z<\/font>, and\/or <font style=\"font-variant: small-caps;\">Command-Y<\/font> are used to perform some variant of the Undo\/Redo command for the current application. Illustrator and InDesign use <font style=\"font-variant: small-caps;\">Command-Shift-Z<\/font> to Redo, while Dreamweaver uses <font style=\"font-variant: small-caps;\">Command-Y<\/font> for Redo.<\/p>\n<p>UnDo in InDesign CS3 is particularly bad because it captures view changes such as normal\/preview and zoom changes as part of the edit history. It is not possible to switch to the preview view and then alternate between before and after the most recent edit to assess the edit. As soon as you hit Undo, the change to the preview view is reversed.<\/p>\n<p><center><\/p>\n<table style=\"border-width: 0px 0px 0px 0px; border-spacing: 3px; border-style: none none none none; border-collapse: collapse; text-align: left;\">\n<tr>\n<td><\/td>\n<td style=\"padding: 0px 3px 0px 3px;\"><em>Photoshop<\/em><\/td>\n<td style=\"padding: 0px 3px 0px 3px;\"><em>Illustrator<\/em><\/td>\n<td style=\"padding: 0px 3px 0px 3px;\"><em>InDesign<\/em><\/td>\n<td style=\"padding: 0px 3px 0px 3px;\"><em>Flash<\/em><\/td>\n<td style=\"padding: 0px 3px 0px 3px;\"><em>Dreamweaver<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: 0px 1px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px; text-align: right;\"><em>UnDo<\/em><\/td>\n<td style=\"border-width: 1px 0px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Z<\/font><\/td>\n<td style=\"border-width: 1px 0px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px;\">&nbsp;<\/td>\n<td style=\"border-width: 1px 0px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px;\">&nbsp;<\/td>\n<td style=\"border-width: 1px 0px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px;\">&nbsp;<\/td>\n<td style=\"border-width: 1px 0px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px;\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: 0px 1px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px; text-align: right;\"><em>ReDo<\/em><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Z<\/font><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: 0px 1px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding: 3px 3px 3px 3px; text-align: right;\"><em>Step Forward<\/em><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Shift-Z<\/font> <\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Shift-Z<\/font><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Shift-Z<\/font><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Y<\/font><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Y<\/font><\/td>\n<\/tr>\n<tr>\n<td style=\"border-width: 0px 1px 0px 0px; border-style: solid; border-color: gray gray gray gray; padding:  3px 3px 3px 3px; text-align: right;\"><em>Step Backward<\/em><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Option-Z<\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Z<\/font><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Z<\/font><\/td>\n<td><font style=\"font-variant: small-caps;\">Command-Z<\/font><\/td>\n<td style=\"padding:  3px 3px 3px 3px;\"><font style=\"font-variant: small-caps;\">Command-Z<\/font><\/td>\n<\/tr>\n<\/table>\n<p><\/center><\/p>\n<p>Wrapped up in this issue are concerns about user inertia&mdash;Photoshop has been using <font style=\"font-variant: small-caps;\">Command-Z<\/font> for Undo\/Redo since the time before applications kept track of edit histories. I am one of the users who feel this inertia. My fingers automatically perform <font style=\"font-variant: small-caps;\">Command-Z<\/font> in Photoshop when I want to compare whether my last image adjustment has been an improvement. But user inertia shouldn&#8217;t be used to prevent improvement and consistency in the User Experience. I remember the transition from Photoshop v2.5.8 to v3.0 where virtually all keyboard shortcuts were changed. The transition was painful but limited to a couple of weeks whereas with the inconsistency in CS3 the transition pains happen again every time you switch applications.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Consistency in the user interface is a vital part of making applications easy to use. Arguably, UI consistency is a significant factor in the oft-repeated ease-of-use provided by MacOS and now OS X. Certainly Apple pushed their User Interface Design &hellip; <a href=\"https:\/\/michaelrichmond.net\/blog\/2007\/06\/26\/undoing-undo\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,1,44],"tags":[],"class_list":["post-95","post","type-post","status-publish","format-standard","hentry","category-osx","category-uncategorized","category-user-interface"],"_links":{"self":[{"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":0,"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"wp:attachment":[{"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michaelrichmond.net\/blog\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}