Blueprint Graph Editor Keyboard Navigation Skips Disconnected Nodes and Comment Bubbles
0 reputation · 07 Jan 2022, 16:38 UTC
0 reputation · 07 Jan 2022, 16:38 UTC
35275 reputation · 08 Jan 2022, 00:14 UTC
SGraphPanel draws Blueprint nodes, wires, pins, and comment bubbles as custom paint primitives rather than discrete Slate widgets. Because Slate's focus traversal and IAccessibleMessageHandler operate on the widget hierarchy, the graph editor has no addressable widget to focus or to announce when the underlying UEdGraph data changes. This decoupling of visual representation from interactive representation is the primary obstacle.
Confirmed: In stock Unreal Engine builds, keyboard navigation in Blueprint graphs follows existing wire connections between pins. Disconnected nodes and comment bubbles are not reachable via standard Tab traversal because no focusable widget represents them.
Likely explanation: Comment bubbles are painted as decorative background elements rather than interactive Slate components, making them invisible to standard keyboard focus loops and screen-reader announcements.
Uncertain: Whether UE 5.5 includes unannounced IAccessibleMessageHandler integration in SGraphEditor. The question notes that Epic's accessibility roadmap has prioritized UMG runtime features and high-contrast themes, while editor-side graph gaps remain unresolved. Treat any claim of built-in UE 5.5 graph accessibility as unverified until confirmed against release notes or engine source.
A scoped extension requires a custom focus search algorithm that iterates the UEdGraph node list rather than relying on Slate's default child-widget traversal. Practical steps:
SWidgets for each node, pin, and comment bubble, or implement a custom navigation handler that maps keyboard input to graph coordinates.IAccessibleMessageHandler events fire on node addition, deletion, wire creation, and comment updates.OnPaint rendering path and adding an input-aware hit-test layer or focus proxies.Before changing the rendering pipeline, verify the current architecture in your build:
SGraphPanel.cpp to confirm whether nodes are instantiated as SWidget subclasses or drawn via OnPaint.IAccessibleMessageHandler is registered within the SGraphEditor class hierarchy.SGraphPanel to identify any accessibility refactors.If your project uses a custom engine fork with existing Slate widget overrides for graph nodes, the recommended path shifts from adding proxy widgets to extending the existing widget registration. Please confirm whether you are working from a stock UE 5.5 build or a modified fork.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.