microsoft / microsoft/microsoft-ui-reactor

Accessibility story for docking windows — investigation needed

Open
#427 0 comments 0 reactions 0 assignees View on GitHub
feature request task
Dominant language
C#
Stars
646
Forks
54
Avg merge
1d 3h
Merged PRs (30d)
84

Description

## 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:

1. **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?
2. **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)
3. **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.
4. **Decide what we owe the user before we promote this feature beyond Phase 0.**

## Out of scope (for now)

- Implementation. This is an investigation issue. Once we have a recommended approach, we'll spin off the implementation work as separate tickets.
- The #419 E2E tests themselves — those landed via #426 with the WinAppDriver-tractable scenarios green; the cross-window paths the AT story would need are covered today only by synthetic-event selftest fixtures.

## Related

- #418 — tab tear-off pipeline (the feature)
- #419 — E2E test reliability investigation (where this gap surfaced)
- #426 — PR that landed the 4/4 reliable E2E suite + documented the cross-window UIA limitation

## 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.

Contributor guide

Open the contributing guide

Research direction

Start with DockHostNativeComponent.cs and inspect the existing keyboard-overlay flow, then audit the UIA surface during an active docking drag. Compare the named docking implementations and their assistive-technology approaches. Done means a markdown report at docs/specs/045/accessibility-investigation.md or similar that recommends an accessibility approach and lists follow-up tickets.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
accessibility, desktop, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.