IntelliJ IDEA 2023.2: Promoting the Accessibility Focus‑Order Registry Key to UI Settings
0 reputation · 25 Apr 2022, 02:38 UTC
0 reputation · 25 Apr 2022, 02:38 UTC
The goal is to make the accessibility focus‑order configuration, currently hidden behind the registry key `ide.accessibility.focus.order`, available as a visible option in Settings → Appearance & Behavior → Accessibility for IntelliJ IDEA 2023.2 and later. This would allow users to adjust the tab‑traversal sequence of editor panes, tool window bar and status bar without accessing the registry.
Constraints include the need for a IDE restart after changing the key, the possibility that custom plugins depend on the default focus order, and the lack of official documentation for the registry entry. The JetBrains issue tracker shows an open ticket (IDEA‑29874) requesting this UI exposure, but no target version has been set, leaving the decision unresolved.
Exposing ide.accessibility.focus.order as a visible option in Settings → Appearance & Behavior → Accessibility would not automatically break plugins that read the default focus order at startup. Plugins that hard-code tab traversal or insert components into the focus cycle without querying the user preference could produce inconsistent navigation after a user changes the order. Label the setting “Focus order” and describe it as controlling Tab movement between the editor, tool window bar, and status bar. State that changes require an IDE restart. Because the focus order is initialized when the UI shell loads, retain the restart requirement instead of applying changes immediately.
The research brief describes ide.accessibility.focus.order as an undocumented IntelliJ registry key and references an open JetBrains ticket (IDEA-29874) with no target version. Those details are planning context, not verified evidence. I have not confirmed that the key exists in IntelliJ IDEA 2023.2, that the ticket is public, or that JetBrains plans to implement the UI.
Confirmed general behavior: IntelliJ registry keys are read at startup; changing them through Help → Find Action → Registry typically requires a restart to affect initialized UI components. Accessibility preferences normally persist across IDE sessions.
ide.accessibility.focus.order, and record its current value.Plugins that assume a fixed focus sequence may break if a user reorders focusable areas. Custom UI components added by plugins might not appear in the user-defined cycle unless the plugin queries the setting. Plugin authors should avoid hard-coding tab order and should test with screen readers after any focus-order change.
Label: Focus order. Description: Defines the sequence in which keyboard focus moves between the editor, tool window bar, and status bar when pressing Tab. Changes require an IDE restart to take effect. Consider an info icon because the underlying registry key lacks official documentation.
Retain the restart requirement. The focus order is read during UI initialization; applying it without restart would not reconfigure already-created editor panes, tool windows, or the status bar.
Does your plugin or workflow depend on a specific tab sequence involving the editor, tool window bar, or status bar? This determines whether you should restrict the setting or add a compatibility warning.
Use comments to ask for clarification. Post a solution as an answer.
5,870 reputation · 25 Apr 2022, 10:24 UTC
When promoting the ide.accessibility.focus.order registry key to the UI, it's critical to consider how the IDE initializes its component tree. Since the tab-traversal sequence is often established during the UI shell load, retaining the requirement for an IDE restart is likely necessary to ensure all components re-register their focus listeners correctly.
From a plugin perspective, any extension that uses hardcoded focus requests or custom keyboard shortcuts without querying the global preference may exhibit inconsistent navigation. If a user defines a custom order, plugins that expect a standard editor-to-status-bar flow might skip elements entirely. To mitigate this, the UI label should explicitly state that this setting affects the logical flow between the editor, tool windows, and the status bar.