P: Floating dialogs are opened without initial keyboard focus
- July 9, 2026
- 1 reply
- 22 views
Environment
- Adobe Lightroom Classic 15.4 (also observed in earlier versions)
- Lightroom SDK
- Windows 11
- Standalone reproducer plugin attached
Summary
A floating dialog opened via presentFloatingDialog() becomes the active window, but no control initially receives keyboard focus.
As a result, standard keyboard interaction is unavailable immediately after the dialog opens. Pressing Enter, Esc, Space, or Shift+Tab has no effect. Keyboard navigation only begins after pressing Tab once (or after clicking any control with the mouse).
The same reproducer behaves differently on macOS, where the first control immediately participates in keyboard navigation.
Steps to Reproduce
- Install the attached reproducer plugin via File > Plug-in Manager > Add.
- Run File > Plug-in Extras > Floating Dialog Keyboard Focus Reproduction
- Without using the mouse, press the following keys in order:
- Enter
- Esc
- Space
- Shift+Tab
- Finally, press Tab.
A complete standalone reproducer plugin is attached.
Expected Result
When the floating dialog becomes the active window, one of its controls should immediately receive keyboard focus, allowing standard keyboard interaction without requiring additional user input.
For example:
- Enter activates the default button.
- Esc activates the Cancel button (if present).
- Space activates the currently focused control.
- Shift+Tab navigates to the previous control.
- Tab navigates to the next control.
Actual Result
Although the floating dialog is the active window, no control initially has keyboard focus.
Immediately after opening the dialog:
- Enter has no effect.
- Esc has no effect.
- Space has no effect.
- Shift+Tab has no effect.
Only after pressing Tab once (or clicking any control with the mouse) is keyboard focus established. From that point onward, Tab and Shift+Tab navigate the dialog normally.
Additional Information
- This behavior appears to be specific to floating dialogs created with
presentFloatingDialog(). - Modal dialogs created with
presentModalDialog()correctly initialize keyboard focus. - The attached reproducer contains only standard SDK controls and no custom keyboard handling or focus management.
- On macOS, the reproducer behaves as expected: the first control initially participates in keyboard navigation.
Impact
This prevents floating dialogs from behaving like normal interactive dialogs on Windows.
Plugins that rely on keyboard interaction immediately after opening a floating dialog cannot provide a seamless user experience because keyboard navigation is not initialized until the user explicitly presses Tab or clicks a control.
A prominent real-world example is the Focus Points plugin (https://github.com/FocusPointsLrC/Focus-Points), whose upcoming interactive floating dialog mode relies on immediate keyboard interaction. On Windows, plugin authors currently need to rely on workarounds to establish keyboard focus after opening the dialog.
Attachments
Standalone reproducer plugin FloatingDialogKeyboardFocus.lrplugin
