Files
emacs-doom/patches/0001-ns-implement-AXBoundsForRange-for-macOS-Zoom-cursor-.patch
Daneel 60afee0aec v13 patch: VoiceOver virtual accessibility tree
Complete rewrite of accessibility support. Instead of flat AXTextArea
on EmacsView, implements proper tree with virtual elements:

  EmacsWindow (AXWindow)
  └── EmacsView (AXGroup)
      ├── EmacsAccessibilityBuffer (AXTextArea) — window 1
      ├── EmacsAccessibilityBuffer (AXTextArea) — window 2
      └── ...

Each EmacsAccessibilityBuffer maps to one Emacs window and exposes:
- Buffer text via glyph row iteration (accurate, handles overlays)
- Visual line navigation (glyph_row vpos)
- Cursor tracking with glyph charpos mapping
- Hit testing (accessibilityRangeForPosition:)
- Selection range with active mark
- Screen geometry via pixel coordinate conversion
- Rich typing echo (kAXTextEditTypeTyping userInfo)
- UAZoomChangeFocus for Zoom

Dynamic tree rebuilt on each redisplay cycle from FRAME_ROOT_WINDOW.
Notifications on correct virtual elements (not container view).

3 review cycles (scores: 62 → 68 → 82), plus manual fixes for
hit testing and selection range.
2026-02-25 23:26:59 +01:00

25 KiB