Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
21

P: Incorrect history steps when using keyboard shortcuts to adjust Develop sliders

LEGEND ,
Nov 26, 2023 Nov 26, 2023

When using the keyboard shortcuts "=" or "-" to adjust a Develop slider, an adjustment to another slider with the mouse is incorrectly included in the history step for the first slider.  This doesn't happen when you make the adjustments solely with the mouse. 

 

In a related bug, if you adjust a Develop slider with the shortcut and then quickly click Reset, "Reset" appears as a history step before the slider.

 

To reproduce in LR 13.0.1 / Mac OS 14.1:

 

In screen recording tracking1.mp4:

 

1. Reset the settings on a photo and clear the history.

 

2. Click on the "Exposure" label to select that slider.

 

3. Quickly type "=" three times and then immediately use the mouse to click on the right end of the Contrast slider.

 

4. Observe that there is just one history step, "Exposure +0.30 0.30", even though Contrast is now +65 (or whatever value you clicked).

 

5. Set Contrast to -100, and observe there is now (correctly) a second history step, "Contrast -165 -100".

 

6. Click on the Exposure history step and observe the Contrast slider gets restored to +65, demonstrating that it was part of that history step.

 

7. Reset the settings and clear the history.

 

8. Slowly move Exposure from 0 to 3 and then immediately click on the right end of the Contrast slider (around +80).

 

9. Observe that there are correctly two history steps, one for Exposure and one for Contrast.

 

In screen recording tracking2.mp4:

 

10. Reset the settings and clear the history.

 

11. Click on the "Exposure" label to select that slider.

 

12. Quickly type "=" three times and then click Reset with the mouse.

 

13. Observe that the Reset history step incorrectly occurs  before the Exposure step.

 

 

Bug Investigating
TOPICS
macOS , Windows
727
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Pinned Reply

Adobe Employee , Nov 27, 2023 Nov 27, 2023

Logged and status updated

Status Investigating
Translate
5 Comments
Advocate ,
Nov 26, 2023 Nov 26, 2023

Adding to this bug my own findings.

 

  • History is broken if we change a second settings before a step is recorded after using API.

 

Steps to reproduce:

 

0. Download the Folder called "Scripts".

Link: https://www.dropbox.com/scl/fo/hb9v6lpyl9i8qjh77z9aj/h?rlkey=3hnzwxiopbucd4h065h537iul&dl=0

 

0.1. Add the folder to the following location depending on your system:

 

  • [Windows] C:\Users\[user name]\AppData\Roaming\Adobe\Lightroom
  • [Mac OS] /Users/[user name]/Library/Application Support/Adobe/Lightroom

 

If you already have a Scripts folder then simply add the included script there (the script contained is the following and increases Exposure by +0,1)

 

 

local LrDevelopController = import "LrDevelopController"
LrDevelopController.increment ("Exposure2012")

 

 

1. Launch LrC

2. Select a photo, and go in develop module.

3. For the sake of the test clear history, then Reset the photo (you will end having one history step called "Reset Settings")

4. Open the Scripts folder by clicking the "Pergamene" icon at the top.

 

Screenshot 2023-11-27 at 07.50.56.pngexpand image

 

5. Use the "Exposure +" script.

6. Very quickly BEFORE any new "Exposure + 0,1" history step/state is recorded, change another setting that is not Exposure using the relative slider (do it roughly no need to be precise about the value)

 

Result: Only one History step will be created but actually 2 settings were changed.

 

Screenshot 2023-11-27 at 08.32.20.pngexpand image

Screenshot 2023-11-27 at 08.32.30.pngexpand image

  

LrC is grouping together into a single history state totally different settings after using API BUT they should be recorded separately.

 

In the script I didn't use LrDevelopController.setMultipleAdjustmentThreshold () so history grouping of different adjustments  should NOT have happened.

 

.

Translate
Report
Adobe Employee ,
Nov 27, 2023 Nov 27, 2023

Logged and status updated

Rikk Flohr: Adobe Photography Org
Status Investigating
Translate
Report
Advocate ,
Feb 17, 2024 Feb 17, 2024

This bug is driving me insane.

I can't create many codes without incorrect history steps being created.

 

Here is a simple script to test the bug:

 

 

 

local LrDevelopController = import "LrDevelopController"

LrDevelopController.setTrackingDelay (10)
LrDevelopController.startTracking ("Exposure2012")
LrDevelopController.increment ("Exposure2012")

 

 

 

 

 

The instructions are clear:

I have set a delay so whenever the script is used it will take 10 seconds for a history step to be recored.

This gives plenty of time to change ANY other setting.

 

I have also instructed to track the setting that is being changed (Exposure) so as soon as any other setting is changed IN THEORY an history step should be created for each setting.

 

So in order to test do:

 

0. Unedited image 

1. Run the script

2. Change any other setting other than Exposure (e.g Clarity)

 

Result: as soon as we change a setting other than "Exposure2012" the other/different setting WILL NOT get a unique step in history and the two settings will be grouped into one history step under Exposure + 0.1

 

  • LrC is grouping changes to different settings in one step despite the fact that it should not.

 

ALSO the opposite issue is true.

 

  • LrC will create multiple separate history steps EVEN when they are performed in quick succession way under the default threshold to create separate steps.

 

Do this test.

 

1. Crop your image.

2. Change any of the Transform panel settings.

3. Run this script

 

 

local LrDevelopController = import "LrDevelopController"
local LrTasks = import "LrTasks"

LrTasks.startAsyncTask (function ()
    LrDevelopController.resetToDefault ("PerspectiveVertical")
    LrDevelopController.resetToDefault ("PerspectiveHorizontal")
    LrDevelopController.resetToDefault ("PerspectiveRotate")
    LrDevelopController.resetToDefault ("PerspectiveScale")
    LrDevelopController.resetToDefault ("PerspectiveAspect")
    LrDevelopController.resetToDefault ("PerspectiveX")
    LrDevelopController.resetToDefault ("PerspectiveY")
    LrDevelopController.resetToDefault ("PerspectiveUpright")
  
LrTasks.sleep (0.1)

LrDevelopController.resetCrop()
    end)

 

 

 

After running the script you will end up with 2 more separate history steps instead of one BUT all happened in less than the default 2 seconds threshold.

 

 

 

.

 

 

Translate
Report
LEGEND ,
Feb 17, 2024 Feb 17, 2024

Idle speculation:

 

I wonder if the strange behavior of LrDevelopController's history-step tracking is related to the behavior of catalog:withWriteAccessDo() on Mac. Normally, each invocation of withWriteAccessDo() creates a new Undo step, but there is this caveat in the documentation:

 

"Note that if you use :withWriteAccessDo multiple times in succession without any intervening user interaction, the undo system in Mac OS will coalesce these into a single undoable event, which uses the name of the last one."

 

History and Undo are two separate facilities that must be closely related internally. I wonder if there's a bad interaction in the implementing code that causes LrDevelopController to behave badly.

 

You could test this hypothesis to see if the bad behavior you're observing on Mac also occurs on Windows.

 

 

Translate
Report
Advocate ,
Feb 17, 2024 Feb 17, 2024
LATEST

@johnrellis I am no longer Windows and can't test anymore.

 

I have also tried to use LrDevelopController.setMultipleAdjustmentThreshold () to group steps together when I need it.

 

 

local LrDevelopController = import "LrDevelopController"
local LrTasks = import "LrTasks"

LrDevelopController.setMultipleAdjustmentThreshold (2)

LrTasks.startAsyncTask (function ()
    LrDevelopController.resetToDefault ("PerspectiveVertical")
    LrDevelopController.resetToDefault ("PerspectiveHorizontal")
    LrDevelopController.resetToDefault ("PerspectiveRotate")
    LrDevelopController.resetToDefault ("PerspectiveScale")
    LrDevelopController.resetToDefault ("PerspectiveAspect")
    LrDevelopController.resetToDefault ("PerspectiveX")
    LrDevelopController.resetToDefault ("PerspectiveY")
    LrDevelopController.resetToDefault ("PerspectiveUpright")
  
LrTasks.sleep (0.1)

LrDevelopController.resetCrop()
    end)

 

 

Doesn't seem tow work, LrC seems to creates separate steps anyway.

Translate
Report