patches: address maintainer review findings (C1/C2/H1/H2/M5/M6)
C1 - block_input ordering in ns_ax_buffer_text: block_input() now called before record_unwind_protect_void(unblock_input). Previously the unwind handler could have been called without a matching block_input, corrupting the input-blocking reference count. C2 - unbind_to missing in patch 0004: unbind_to(blk_count, Qnil) moved from patch 0008 to patch 0004 so that ns_ax_scan_interactive_spans has a complete block_input/unbind_to pair when patches 0000-0004 are applied independently. H1 - Zoom patch forward dependency on VoiceOver: Removed forward declaration 'static bool ns_ax_face_is_selected' and the delegation from ns_zoom_face_is_selected. Restored standalone implementation of ns_zoom_face_is_selected in the Zoom patch so patch 0000 compiles and links independently of the VoiceOver patches. H2 - ns_accessibility_enabled removal undocumented: Added comment to ns_zoom_track_completion explaining that Zoom cursor tracking is gated only on ns_zoom_enabled_p(), not ns_accessibility_enabled. Users running Zoom without VoiceOver must still get completion tracking. M5 - childFrameLastBuffer GC safety undocumented: Added comment at the assignment site explaining why BVAR(b, name) (an interned symbol reachable from obarray) is GC-safe without staticpro. M6 - FOR_EACH_FRAME without block_input: Added block_input/unblock_input around the FOR_EACH_FRAME loop in postAccessibilityUpdates that checks for visible child frames. Vframe_list must not be modified by timers or process sentinels during iteration.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 5d5aca0665a22d3bf3cce54e53ec58fa9defab6e Mon Sep 17 00:00:00 2001
|
||||
From 6a4b3c33a0d9fdced519aff87cc02da13763f17c Mon Sep 17 00:00:00 2001
|
||||
From: Martin Sukany <martin@sukany.cz>
|
||||
Date: Sat, 28 Feb 2026 12:58:11 +0100
|
||||
Subject: [PATCH 4/8] ns: add interactive span elements for Tab navigation
|
||||
@@ -14,14 +14,14 @@ elements with an AXPress action that sends a synthetic TAB keystroke.
|
||||
(accessibilityChildrenInNavigationOrder): Return cached span array,
|
||||
rebuilding lazily when interactiveSpansDirty is set.
|
||||
---
|
||||
src/nsterm.m | 291 +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 291 insertions(+)
|
||||
src/nsterm.m | 292 +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 292 insertions(+)
|
||||
|
||||
diff --git a/src/nsterm.m b/src/nsterm.m
|
||||
index 9e0e317237..b460beb00c 100644
|
||||
index 9e0e317237..8aa5b6ac1b 100644
|
||||
--- a/src/nsterm.m
|
||||
+++ b/src/nsterm.m
|
||||
@@ -9346,6 +9346,297 @@ - (NSRect)accessibilityFrame
|
||||
@@ -9346,6 +9346,298 @@ - (NSRect)accessibilityFrame
|
||||
|
||||
@end
|
||||
|
||||
@@ -181,6 +181,7 @@ index 9e0e317237..b460beb00c 100644
|
||||
+ pos = span_end;
|
||||
+ }
|
||||
+
|
||||
+ unbind_to (blk_count, Qnil);
|
||||
+ return [[spans copy] autorelease];
|
||||
+}
|
||||
+
|
||||
|
||||
Reference in New Issue
Block a user