Sometimes Undo is "Undo Save History State for Image"...

Anyone know why the Undo command occasionally produces "Undo Save History State for Image" rather than a proper undo of the last operation?

I am aware of your contribution to this forum and genuinely have utmost respect for what you say, however without getting too heavily into the semantics of the meaning of the word “bug” I would truly appreciate your thought on this …
b_gossweiler wrote:
If you export (or also print) an image, an entry is inserted into the develop history of the image. Although these steps (export, print, ...) cannot be physically undone, the undo removes this history step from the develop history of the image. This makes sense and - IMHO - is not a bug at all.
Beat
Would it not be reasonable that when a user requests an “undo” that they would expect this to undo the last thing “they” did regardless of what any background task is doing?   
If this does occur when performing some background task on several hundred or thousand images does this mean that they could struggle to actually achieve any meaningful undo operation on what they are currently working on because they could be attempting to undo many state changes?      If so, could one consider that from a user’s perspective the undo mechanism is actually broken in this scenario?
If they request an “undo” and it does not perform to the users reasonably expected behaviour would it not reasonably be considered at least undesirable if not a bug?
If they perform an “undo” and they get this message have they actually undone something which might be important?   
Even if it has no ill effects the message alone could be unsettling and confusing to users?
You say it makes sense and I know I’m slow, but I would not expect a user to see this message when the user wants to undo for example the modification to exposure or other slider they have just changed.
I’m not hung up on this as I have seen no ill effects other than mild inconvenience; however I would respectively appreciate your views on how this “makes sense” from a user’s perspective.

Similar Messages

  • Is there a way to undo one history state for all files in a folder?

    I accidently sepia toned an image while having all photos selected. Of course auto sync is active, and LR is obediently turning all 500 of my images to sepia!
    Is there a method to rollback to the previous history state for ALL photos? I had just finished applying a vignette to them, and would dearly like to get back to that state.
    Ahhhh, my eyelid is twitching!!!
    Kittie

    I've had some luck in using the Synch command in undoing, say a Sepia toning, with affected photos all selected. Roll back to previous state, then hit Synch- not Auto!- and be careful what you choose in dialogue. I unselected all, then chose just "color".
    I believe this will work if the Sepia toning is the last step, which is how I just tested it.

  • Why won't Photoshop revert to earlier history state after image resize when scripted?

    I've written an Applescript to automate watermarking and resizing images for my company. Everything generally works fine — the script saves the initial history state to a variable, resizes the image, adds the appropriate watermark, saves off a jpeg, then reverts to the initial history state for another resize and watermark loop.
    The problem is when I try not to use a watermark and only resize by setting the variable `wmColor` to `"None"` or `"None for all"`. It seems that after resizing and saving off a jpeg, Photoshop doesn't like it when I try to revert to the initial history state. This is super annoying, since clearly a resize should count as a history step, and I don't want to rewrite the script to implement multiple open/close operations on the original file. Does anyone know what might be going on? This is the line that's generating the problem (it's in both the doBig and doSmall methods, and throws an error every time I ask it just to do an image resize and change current history state):
                        set current history state of current document to initialState
    and here's the whole script:
    property type_list : {"JPEG", "TIFF", "PNGf", "8BPS", "BMPf", "GIFf", "PDF ", "PICT"}
    property extension_list : {"jpg", "jpeg", "tif", "tiff", "png", "psd", "bmp", "gif", "jp2", "pdf", "pict", "pct", "sgi", "tga"}
    property typeIDs_list : {"public.jpeg", "public.tiff", "public.png", "com.adobe.photoshop-image", "com.microsoft.bmp", "com.compuserve.gif", "public.jpeg-2000", "com.adobe.pdf", "com.apple.pict", "com.sgi.sgi-image", "com.truevision.tga-image"}
    global myFolder
    global wmYN
    global wmColor
    global nameUse
    global rootName
    global nameCount
    property myFolder : ""
    -- This droplet processes files dropped onto the applet
    on open these_items
      -- FILTER THE DRAGGED-ON ITEMS BY CHECKING THEIR PROPERTIES AGAINST THE LISTS ABOVE
              set wmColor to null
              set nameCount to 0
              set nameUse to null
              if myFolder is not "" then
                        set myFolder to choose folder with prompt "Choose where to put your finished images" default location myFolder -- where you're going to store the jpgs
              else
                        set myFolder to choose folder with prompt "Choose where to put your finished images" default location (path to desktop)
              end if
              repeat with i from 1 to the count of these_items
                        set totalFiles to count of these_items
                        set this_item to item i of these_items
                        set the item_info to info for this_item without size
                        if folder of the item_info is true then
      process_folder(this_item)
                        else
                                  try
                                            set this_extension to the name extension of item_info
                                  on error
                                            set this_extension to ""
                                  end try
                                  try
                                            set this_filetype to the file type of item_info
                                  on error
                                            set this_filetype to ""
                                  end try
                                  try
                                            set this_typeID to the type identifier of item_info
                                  on error
                                            set this_typeID to ""
                                  end try
                                  if (folder of the item_info is false) and (alias of the item_info is false) and ((this_filetype is in the type_list) or (this_extension is in the extension_list) or (this_typeID is in typeIDs_list)) then
      -- THE ITEM IS AN IMAGE FILE AND CAN BE PROCESSED
      process_item(this_item)
                                  end if
                        end if
              end repeat
    end open
    -- this sub-routine processes folders
    on process_folder(this_folder)
              set these_items to list folder this_folder without invisibles
              repeat with i from 1 to the count of these_items
                        set this_item to alias ((this_folder as Unicode text) & (item i of these_items))
                        set the item_info to info for this_item without size
                        if folder of the item_info is true then
      process_folder(this_item)
                        else
                                  try
                                            set this_extension to the name extension of item_info
                                  on error
                                            set this_extension to ""
                                  end try
                                  try
                                            set this_filetype to the file type of item_info
                                  on error
                                            set this_filetype to ""
                                  end try
                                  try
                                            set this_typeID to the type identifier of item_info
                                  on error
                                            set this_typeID to ""
                                  end try
                                  if (folder of the item_info is false) and (alias of the item_info is false) and ((this_filetype is in the type_list) or (this_extension is in the extension_list) or (this_typeID is in typeIDs_list)) then
      -- THE ITEM IS AN IMAGE FILE AND CAN BE PROCESSED
      process_item(this_item)
                                  end if
                        end if
              end repeat
    end process_folder
    -- this sub-routine processes files
    on process_item(this_item)
              set this_image to this_item as text
              tell application id "com.adobe.photoshop"
                        set saveUnits to ruler units of settings
                        set display dialogs to never
      open file this_image
                        if wmColor is not in {"None for all", "White for all", "Black for all"} then
                                  set wmColor to choose from list {"None", "None for all", "Black", "Black for all", "White", "White for all"} with prompt "What color should the watermark be?" default items "White for all" without multiple selections allowed and empty selection allowed
                        end if
                        if wmColor is false then
                                  error number -128
                        end if
                        if nameUse is not "Just increment this for all" then
                                  set nameBox to display dialog "What should I call these things?" default answer ("image") with title "Choose the name stem for your images" buttons {"Cancel", "Just increment this for all", "OK"} default button "Just increment this for all"
                                  set nameUse to button returned of nameBox -- this will determine whether or not to increment stem names
                                  set rootName to text returned of nameBox -- this will be the root part of all of your file names
                                  set currentName to rootName
                        else
                                  set nameCount to nameCount + 1
                                  set currentName to rootName & (nameCount as text)
                        end if
                        set thisDocument to current document
                        set initialState to current history state of thisDocument
                        set ruler units of settings to pixel units
              end tell
      DoSmall(thisDocument, currentName, initialState)
      DoBig(thisDocument, currentName, initialState)
              tell application id "com.adobe.photoshop"
                        close thisDocument without saving
                        set ruler units of settings to saveUnits
              end tell
    end process_item
    to DoSmall(thisDocument, currentName, initialState)
              tell application id "com.adobe.photoshop"
                        set initWidth to width of thisDocument
                        if initWidth < 640 then
      resize image thisDocument width 640 resample method bicubic smoother
                        else if initWidth > 640 then
      resize image thisDocument width 640 resample method bicubic sharper
                        end if
                        set myHeight to height of thisDocument
                        set myWidth to width of thisDocument
                        if wmColor is in {"White", "White for all"} then
                                  set wmFile to (path to resource "water_250_white.png" in bundle path to me) as text
                        else if wmColor is in {"Black", "Black for all"} then
                                  set wmFile to (path to resource "water_250_black.png" in bundle path to me) as text
                        end if
                        if wmColor is not in {"None", "None for all"} then
      open file wmFile
                                  set wmDocument to current document
                                  set wmHeight to height of wmDocument
                                  set wmWidth to width of wmDocument
      duplicate current layer of wmDocument to thisDocument
                                  close wmDocument without saving
      translate current layer of thisDocument delta x (myWidth - wmWidth - 10) delta y (myHeight - wmHeight - 10)
                                  set opacity of current layer of thisDocument to 20
                        end if
                        set myPath to (myFolder as text) & (currentName) & "_640"
                        set myOptions to {class:JPEG save options, embed color profile:false, quality:12}
      save thisDocument as JPEG in file myPath with options myOptions appending lowercase extension
                        set current history state of current document to initialState
              end tell
    end DoSmall
    to DoBig(thisDocument, currentName, initialState)
              tell application id "com.adobe.photoshop"
                        set initWidth to width of thisDocument
                        if initWidth < 1020 then
      resize image thisDocument width 1020 resample method bicubic smoother
                        else if initWidth > 1020 then
      resize image thisDocument width 1020 resample method bicubic sharper
                        end if
                        set myHeight to height of thisDocument
                        set myWidth to width of thisDocument
                        if wmColor is in {"White", "White for all"} then
                                  set wmFile to (path to resource "water_400_white.png" in bundle path to me) as text
                        else if wmColor is in {"Black", "Black for all"} then
                                  set wmFile to (path to resource "water_400_black.png" in bundle path to me) as text
                        end if
                        if wmColor is not in {"None", "None for all"} then
      open file wmFile
                                  set wmDocument to current document
                                  set wmHeight to height of wmDocument
                                  set wmWidth to width of wmDocument
      duplicate current layer of wmDocument to thisDocument
                                  close wmDocument without saving
      translate current layer of thisDocument delta x (myWidth - wmWidth - 16) delta y (myHeight - wmHeight - 16)
                                  set opacity of current layer of thisDocument to 20
                        end if
                        set myPath to (myFolder as text) & (currentName) & "_1020"
                        set myOptions to {class:JPEG save options, embed color profile:false, quality:12}
      save thisDocument as JPEG in file myPath with options myOptions appending lowercase extension
                        set current history state of current document to initialState
              end tell
    end DoBig

    As many others here I use JavaScript so I can’t really help you with your problem.
    But I’d like to point to »the lazy person’s out« – with many operations that result in creating a new file on disk I simply duplicate the image (and flatten in the same step) to minimize any chance of damaging the original file if the Script should not perform as expected.

  • How to save session state for a text item

    hi @averyone,
    i designed in interactive report with one apex_item.text field, let's name it "count"
    normally the report has more then one pages.
    the report should work like a kind of a shopcart.
    the user enters some data into "count" and moves on to the next page(s) enters some more date and so on.
    at the end he/she will press an button to save the data into his shopcart.
    now the problem:
    whenever the page is changed, all data in "count" is lost because the column has no sesseion state.
    any suggestions how to solve this issue without saviing the date in the database everytime the page ist changed?
    thanks in advance
    peter

    Simon,
    i solved the issue using an existing table, which should act quite similar to collections:
    at user request i store all entries in this table & a the end a list of selected rows is presented to the end-user.
    thanks 4 ur assistance
    p.s have a look at the apex api "APEX_ITEM.DISPLAY_AND_SAVE" ?

  • How ADF save client state for dynamic region

    Hi,
    I am wondering what is the best value for "org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS"?
    Our application uses one single dynamic region to render a lot different user menu items outside the region, each menu item corresponds to a bounded taskflow. So if user clicks the back button, user will always goes back to login page.
    Moreover, when the content of the dynamic region change (taskflow id change), is the client state of the previous taskflow UI's state of the region still tracked by adf? Looks like not necessary but I just want to confirm.
    env: jdev11.1.2.1
    Many thanks.

    Hi,
    when you switch a dynamic region then the task flow displayed in the region is discarted and no client state other than the current is saved. Each change of the dynamic region changes the current view Id but does not replace it
    Frank

  • Please explain the two QuickTime Pro "Save As" options for image sequences.

    I am attempting to send a qt file to a windows user and they had no issues with the first file I sent, 15,762 Kb except it's size.
    Noticing the two save options: 1)self contained movie any external media will be included with this movie or 2) any external movies will be required to play this movie).
    This message, second option particularly I find confusing, Is this supposed to read "Any external media will be required to play this movie"? Could someone explain this message please?
    Thanks

    The two options are "Self Contained" and "Reference".
    A self contained file gathers up all of the "parts" and places them in a single file.
    A reference movie merely notes the "location" of the parts (music in your iTunes Library, photos, transitions or effects and video) wherever they are stored on your machine or network. As playback occurs all of the parts are pulled back as needed.
    Self contained is the best method of saving. Reference movies are usually only made and saved for "local" viewing.

  • States on Images

    Can  I put states on a images? (ex nomal, rollover..)

    Hi Constantine1224,
    Yes, it is possible to define states for images in Muse. Please refer to the following link http://tv.adobe.com/watch/muse-feature-tour/muse-define-object-states/
    Cheers,
    Aish

  • How to save the session states for a tabular form WITHOUT using check boxs?

    Greeting guys,
    As you know that we can use collections to save the session states of a tabular forms, described in the how-to doc of manual tabular forms. However, what I am trying to do ( or have to do) is to provide a manual tabular form, and save the session states for validation, without using the check boxes. Because a user can put contents into some columns in a row without checking the corresponding checkbox, according to the requirements. So basically what I tried is to loop over all the rows and save Every entry into a collection. However, sometimes I got "no data found" error with unknown reasons.
    My current solution is to use the "dirty" Retry button that gets back the history, which IMO is not a good workabout. So, I'd appreciate if somebody can shed some light on a better solution, especially if it is close to the one in that how-to doc.
    Thanks in advance.
    Luc

    The following is the first collection solutin I've tried:
    htmldb_collection.create_or_truncate_collection('TEMP_TABLE');
    for i in 1..p_row_num loop -- Loop on the whole form rows
    if (htmldb_application.g_f01(i) is not null) or (htmldb_application.g_f05(i) <> 0)
    --If either of them has some input values, the row should be saved into the colleciton.
    then
    htmldb_collection.add_member(
    p_collection_name => 'TEMP_TABLE',
    p_c001 => htmldb_application.g_f01(i),
    p_c002 => htmldb_application.g_f03(i),
    p_c003 => htmldb_application.g_f04(i),
    p_c004 => htmldb_application.g_f05(i),
    p_c005 => htmldb_application.g_f06(i),
    p_c006 => htmldb_application.g_f08(i)
    end if;
    end loop;
    Some of columns have null values, but I don't think that's the reason. Because once I clicked all the check boxes, there would be no error no matter what values were in other columns.
    Another issue would be extract the values FROM the collection, which has been tried because I had problem to store the data into the collection. I used "decode" functions inside the SQL to build the tabular form. I am not sure whether it will be the same as a regular SQL for a tabular form, like the example in the How-to doc.
    Also I didn't use the checksum, for it is not an issue at the current stage. I am not sure whether that's the reason which caused the NO DATA FOUND error.

  • [JS][CS3] Live detection of undo/redo history changes?

    As an exercise I wrote my own History palette for InDesign CS3. Seems to be working quite nicely, but at the moment is limited to updating as the floating palette gains focus. To make it more useful I'd like to implement live updating but am out of ideas on how to implement it, none of the relevant objects seem to support the watch() function and ExtendScript doesn't have the setInterval() global function... Any ideas?

    First thing I do in PS keyboard shortcuts is have Cntrl+Z = Undo/step back [like nearly all other programmes] and then have Cntrl+Shft+Z to redo/step forward.
    Very, very simple to use and you know exactly where you are. Minimal hand movements unlike the stupid/clunky Cntrl+Y to redo, which some programmes use.
    >2 for and 2 against...
    Typical. And no, don't ask for a "preference" like PS, that was a wimpout.
    Why not, it solves the problem simply and elegently? Then everyone is happy. Any programme that doesn't allow customisation of shortcuts is hamstrung in my opinion, as everyone has slightly differing needs regarding shortcuts. As this thread illustrates perfectly.
    Not to include the option also smacks of arrogance too. "We know the shortcuts you should use, better than anyone else. And we don't care if they are different to all the other progs you use. Even if we made them as well."
    Consistency of basic attributes of software makes for a good workflow.
    Different for no valid reason makes for very poor software design. Take one of the unecessary Lightroom + Bridge differences for example. They are incompatible with each other's behaviour when it comes to paired RAW+JPEG handling. How incredibly stupid is that?

  • "UNDO" & "BACKWARD" not working for brush strokes?

    After making three consecutive brush strokes in my image:
    Click on Undo once, History list backs up one step, but last stroke remains on screen. Press Undo again (Redo) and History list returns to last position, last stroke is still on screen. Click Undo again, History list backs up one step, but now brush stroke disappears as it should.
    Or, after clicking Undo the first time, the brush stroke will disappear if I apply another stroke or enter a command, e.g. add new layer.
    After making three consecutive brush strokes:
    Use Backwards command, the History list backs up one step, but brush stroke remains on screen. Use Backwards command a second time, History list backs up another step, the last two brush strokes disappear from screen. Use Backwards a third time, History list backs up another step (now 3 steps total), and the first brush stroke disappears as it should.
    These commands work fine when creating three consecutive layers, then undoing or moving backwards.
    I am using CS 5.1 for Mac running OS Lion 10.7.4. This problem occurs using either a trackball, Wacom Intuos4 tablet or keyboard shortcuts. Can this be a screen-draw bug in the brush tool? Thanks.

    *Rich* wrote:
    I still don't know what Vertical Sync pertains to relative to OpenGL Settings. Anyone know? Thanks.
    Only Adobe knows the exact implementation under the covers, but what it conceptually does is prevent display updates in the middle of a scan. 
    Keep in mind that what you see on the screen is sent pixel by pixel, row by row, to the monitor - much as it was done in the time of CRT displays and scanning electron beams, even though today most  have LCDs.
    Once the last pixel at the bottom has been sent, there is a time called the "vertical sync" time where nothing is sent, before the "scan" starts again from the top.
    Setting the "Vertical Sync" option is supposed to limit display updates to only occur only during the vertical sync time.
    As Conroy has said, this generally can make a display seem cleaner, as when moving something around you might see part of it moved more than another part without Vertical Sync.  This is called "tearing" (as in "tearing a piece of paper in two and having the two parts not line up").
    By definition the Vertical Sync option setting causes a difference in the timing and the sequence of display operations, and that may be working around a bug in the display driver on your system.  It sounds kind of far-fetched, but it happens more than you might think.  Adobe provides all these options to help work around problems.
    -Noel

  • Undo Year end closing for Asset

    Hi,
    I need to undo year end posting for Asset and recalculate depreciation according to the changed laws.
    Is there any prerequisite/constraints to be taken care of before running OAAR(undo year end closing) and AJAB(year end closing) after required postings are done. Any other financial impact does these transactions have apart from the desired depreciation calculation?
    Any help in understanding the scenario will be highly appreciated.
    Regards
    Shilpa

    Hii
    Difference between the two transaction code are
    OAAR-undo by depreciation area
    OAAQ-undo by company code.
    in the first one u r only opening the depreciaiton area that is already closed.
    and in later u r opening whole company code
    Yes after the new depreciation run it will be adjusted but while running u need to select repeat run in T.Code AFABN.
    Through repeat run it will take into consideration the changed values and again calculates the depreciation.
    so values will be adjusted.
    Thanks
    sejal

  • When i put firefox in offline mode, and then click on pages saved in history , it can't load any pages or any images. i put cach size to 250mb but the problem is the same, it saves history for two months, but can't load pages.

    when i put firefox in offline mode, and then click on pages saved in history , it can't load any pages or any images. i put cach size to 250mb but the problem is the same, it saves history for two months, but can't load pages.

    Hi there,
    When I inspect your site in browser tools, I'm getting 404 errors from your page:
    [Error] Failed to load resource: the server responded with a status of 404 (Not Found) (jquery-2.0.3.min.map, line 0)
    [Error] Failed to load resource: the server responded with a status of 404 (Not Found) (edge.4.0.0.min.map, line 0)
    BarnardosIreland wrote:
    I would have thought that publishing should give a complete package that doesn't need any further edits to the code and can just be directly ftp'ed to the web - is this correct?
    In general, you are correct - but also your server does need to be properly configured (and those errors above lead me to think it may not be) to serve the file types that your uploading - but it could be something else entirely. Can you zip up your composition folder, upload it to your Creative Cloud files, set it to share, and then post a link here so I can download it? If you'd rather not share it publicly, can you PM me with a link to your composition files?
    Thanks,
    Joe

  • Save all variables state for next execution

    Hello everybody, I am trying to save all the variables values of my Main VI in order to have the exact same state (same settings, devices addresses, array or enum values and so on) on the next execution of the program.
    My idea is to analyze each variable reference and to save its state (variable name+value) in a text data before the program is closed (or for example every 10 minutes).
    The problem is that some of my programs have a complex structure (for example a Register Tab with an Array of Clusters with Arrays inside the cluster) and the subVI I developed is getting more and more complex (and I'm not scalable enough) so I am here to ask for ideas in order to reach my goal.
    So far I developed a simple subVI that according to the Reference ClassID converts the reference to it's specific type and converts the information (variable name and variable value) to a string, and this works for Strings, Numeric, Boolean and Enum. When I have a Register Tab I analyze each page reference and the references in it, when I have an Array of something simple I run the SubVI, but when the element in the array is a cluster I have to analyze each element through my subVI and so on and so on.
    As you can see the complexity grows very fast and I think recursive VI is probably an option (but I don't know how to develope it in my case).
    Last but not least I have to find a way to code all those strings that describe the values so that I can read them and set all the values back.
    I hope you can help me!! Thanks in advance!
    Dario Cassaniti

    There's actually already a VI in OpenG that can be used to read and store all front panel controls as a variant in a .ini file.

  • How to save history for more than one day. Can't find the answer. Thanks, Bil

    When I click on the History tab in the tool bar it only shows History for one day or today. How can I change it to save History for 3 days?
    Thanks,

    See:
    *http://kb.mozillazine.org/Resetting_preferences
    Start Firefox in <u>[[Safe Mode]]</u> to check if one of the extensions is causing the problem (switch to the DEFAULT theme: Firefox (Tools) > Add-ons > Appearance/Themes).
    *Don't make any changes on the Safe mode start window.
    *https://support.mozilla.com/kb/Safe+Mode

  • Can I undo "Erase mac" setting for Stolen, but returned devices??

    Can I undo "Erase mac" setting for Stolen, but returned devices?? Laptop bag with MacBook Pro, iPad and Android Tablet were stolen at a tradeshow last week - so I found the ERASE setting thru iCloud - NOW the devices are all FOUND and being shipped back to me. (HORRAY!!) But, is there a way to UNDO the Erase setting that I clicked on? 

    Hello there, sunny_and72.
    Great news on finding your lost devices! That has got to be a major relief. The following Knowledge Base article offers the possible ways of restoring your data onto your devices after an erase has been performed:
    iCloud: Erase your device
    If you erase then find your iOS device, you can restore the information on the device using iCloud Backup (if backup was turned on before you erased it) or iTunes. For more information, see iCloud storage and backup overview, or the Safety, Handling & Support section of the iOS 8 user guide for your iPhone, iPad, or iPod touch. If your device has iOS 7 or earlier, get the user guide from the Apple Support website. 
    If you erase then find your Mac, you can restore the information on the Mac using a Time Machine backup. For more information, see the Apple Support article Recover your entire system. If you set an EFI firmware password on your Mac before it was lost, then erase it and later find it, you may need to take your Mac to an authorized repair center to unlock it before you can use it again.
    Thanks for reaching out to Apple Support Communities.
    Cheers,
    Pedro.

Maybe you are looking for