patches: QA round 2 PASS (93.5/100) — final indentation fix + ChangeLog commit message
This commit is contained in:
@@ -1,24 +1,34 @@
|
||||
From 3e49c04ee6996a95ead094cae9dff5e7b81a2702 Mon Sep 17 00:00:00 2001
|
||||
From a194f7d30770478d476720f86f39c9878aa63e79 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Sukany <martin@sukany.cz>
|
||||
Date: Fri, 27 Feb 2026 13:34:22 +0100
|
||||
Date: Fri, 27 Feb 2026 13:38:25 +0100
|
||||
Subject: [PATCH] ns: implement VoiceOver accessibility (AXBoundsForRange, line
|
||||
nav, completions, interactive spans)
|
||||
|
||||
* src/nsterm.h: Add EmacsAccessibilityElement, EmacsAccessibilityBuffer,
|
||||
EmacsAccessibilityModeLine, EmacsAccessibilityInteractiveSpan classes;
|
||||
ns_ax_visible_run struct; new EmacsView ivars for AX tree.
|
||||
* src/nsterm.h (EmacsAccessibilityElement): New base class for virtual
|
||||
accessibility elements.
|
||||
(EmacsAccessibilityBuffer): AXTextArea/AXTextField per Emacs window with
|
||||
cached text, visible runs, and interactive span support.
|
||||
(EmacsAccessibilityModeLine): AXStaticText exposing mode line content.
|
||||
(EmacsAccessibilityInteractiveSpan): Focusable element for buttons,
|
||||
links, completion candidates, and keymap overlays.
|
||||
(ns_ax_visible_run): Maps contiguous visible buffer ranges to AX string
|
||||
indices, skipping invisible text.
|
||||
|
||||
* src/nsterm.m: Full VoiceOver/Zoom support:
|
||||
- AXBoundsForRange for macOS Zoom cursor tracking (UAZoomChangeFocus)
|
||||
- EmacsAccessibilityBuffer per window (AXTextArea/AXTextField for minibuffer)
|
||||
- Hybrid notification strategy: SelectedTextChanged for interruption +
|
||||
braille; AnnouncementRequested for speech (char AT point, line text)
|
||||
- Word granularity detection for M-f/M-b (same-line multi-char moves)
|
||||
- Interactive span Tab navigation (buttons, links, completions, org-links)
|
||||
- 4-fallback completion announcement chain for non-focused buffers
|
||||
- Thread-safe: AX getters use cached data built on main thread
|
||||
- GC-safe: all symbols registered via DEFSYM in syms_of_nsterm
|
||||
- Invisible text skipping via TEXT_PROP_MEANS_INVISIBLE
|
||||
* src/nsterm.m (ns_ax_buffer_text): Build accessibility string from
|
||||
buffer content, skipping text hidden via TEXT_PROP_MEANS_INVISIBLE.
|
||||
(ns_ax_event_is_line_nav_key): Detect C-n/C-p/Tab/backtab for line
|
||||
granularity forcing.
|
||||
(ns_ax_scan_interactive_spans): Forward scan for interactive text
|
||||
properties (widget, button, follow-link, org-link, completion, keymap).
|
||||
(ns_ax_completion_string_from_prop): Handle completion--string as plain
|
||||
string or annotated cons list.
|
||||
(postAccessibilityUpdates): Re-entrance-guarded dispatcher called from
|
||||
ns_update_end; rebuilds AX tree on window layout changes.
|
||||
(postAccessibilityNotificationsForFrame:): Hybrid notification strategy:
|
||||
SelectedTextChanged for word/line/selection (VoiceOver reads correctly);
|
||||
AnnouncementRequested for character moves (char AT point, correct for
|
||||
evil block-cursor mode). Non-focused buffer completion announcements
|
||||
via 4-step fallback chain.
|
||||
---
|
||||
src/nsterm.h | 108 ++
|
||||
src/nsterm.m | 2700 +++++++++++++++++++++++++++++++++++++++++++++++---
|
||||
@@ -158,7 +168,7 @@ index 7c1ee4c..6455547 100644
|
||||
|
||||
|
||||
diff --git a/src/nsterm.m b/src/nsterm.m
|
||||
index 932d209..7c50716 100644
|
||||
index 932d209..5cd6ade 100644
|
||||
--- a/src/nsterm.m
|
||||
+++ b/src/nsterm.m
|
||||
@@ -46,6 +46,7 @@ Updated by Christian Limpach (chris@nice.ch)
|
||||
|
||||
Reference in New Issue
Block a user