Context
While fixing #419 (E2E test reliability for tab tear-off), we hit a class of failures that points at a deeper concern than just the tests:
- Cross-window UIA interactions break mid-drag. When the source floating window is hidden mid-tear-off (
BeginFloatingTearOff → AppWindow.Hide() on the single-tab path), WinAppDriver's UIA-driven input pipeline freezes — subsequent moves never reach the host's overlay handlers. Detailed Tracker.OnTick / Overlay.PointerEntered tracing confirmed the cursor moves at the OS level but the host's WinUI input dispatch isn't seeing the events.
- Dragged-preview window opacity bypasses WinUI's hit-test logic, not UIA's.
WS_EX_TRANSPARENT makes the OS WindowFromPoint skip the preview, but UIA's tree walkers still see the preview as a top-level window covering the cursor. The same mechanism that breaks tests would break a screen reader trying to announce or interact with the drop target underneath.
If UIA-driven automation (which is essentially what an assistive technology IS) can't drive a float → host dock-back, neither can a JAWS / NVDA / Narrator user. We have a tested-and-shipping feature (#418) whose primary input modality is not accessible.
What this issue is for
Track the investigation — not the implementation. Specifically:
- Audit our existing UIA surface for the docking pipeline. What does the UIA tree look like during an active drag? Are drop targets named/announced? Can a user identify available targets without seeing them?
- Research how other docking-window solutions tackle accessibility. Concrete candidates:
- Visual Studio's docking (likely the gold-standard reference — it's where the §2.6 design came from)
- JetBrains Rider / IntelliJ tool windows
- VS Code's drag-drop panel
- AvalonDock (WPF, open source — should have visible AT story)
- Telerik / DevExpress / Syncfusion docking controls
- WinUI 3 NavigationView's pane-positioning APIs (closest first-party analog)
- Identify what an accessible alternative input modality looks like. Likely candidates:
- Keyboard-driven move/dock (already partially present —
keyboardOverlayActive references in DockHostNativeComponent.cs). Is the existing keyboard-overlay flow discoverable / announced?
- A context-menu action for "Move to floating window" / "Dock to ...".
- An ARIA-equivalent live-region announcement strategy during drag.
- Decide what we owe the user before we promote this feature beyond Phase 0.
Out of scope (for now)
Related
Acceptance criteria
A markdown doc in docs/specs/045/accessibility-investigation.md (or similar) that:
- Surveys the 3-5 most relevant docking implementations + their AT approaches.
- Recommends an accessibility story for our docking surface (or escalates if there's no clean answer).
- Lists the follow-up tickets needed to implement it.
Context
While fixing #419 (E2E test reliability for tab tear-off), we hit a class of failures that points at a deeper concern than just the tests:
BeginFloatingTearOff→AppWindow.Hide()on the single-tab path), WinAppDriver's UIA-driven input pipeline freezes — subsequent moves never reach the host's overlay handlers. DetailedTracker.OnTick/Overlay.PointerEnteredtracing confirmed the cursor moves at the OS level but the host's WinUI input dispatch isn't seeing the events.WS_EX_TRANSPARENTmakes the OSWindowFromPointskip the preview, but UIA's tree walkers still see the preview as a top-level window covering the cursor. The same mechanism that breaks tests would break a screen reader trying to announce or interact with the drop target underneath.If UIA-driven automation (which is essentially what an assistive technology IS) can't drive a float → host dock-back, neither can a JAWS / NVDA / Narrator user. We have a tested-and-shipping feature (#418) whose primary input modality is not accessible.
What this issue is for
Track the investigation — not the implementation. Specifically:
keyboardOverlayActivereferences inDockHostNativeComponent.cs). Is the existing keyboard-overlay flow discoverable / announced?Out of scope (for now)
Related
Acceptance criteria
A markdown doc in
docs/specs/045/accessibility-investigation.md(or similar) that: