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 31d94ecffbfc42a48c6222a1794b823fd0db7b3c Mon Sep 17 00:00:00 2001
|
||||
From 3a01e0c261a7ece2e8330dce32d4be6d5036be13 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Sukany <martin@sukany.cz>
|
||||
Date: Sat, 28 Feb 2026 12:58:11 +0100
|
||||
Subject: [PATCH 5/8] ns: integrate accessibility with EmacsView and redisplay
|
||||
@@ -51,7 +51,7 @@ index 4c149e41d6..7f917f93b2 100644
|
||||
** Re-introduced dictation, lost in Emacs v30 (macOS).
|
||||
We lost macOS dictation in v30 when migrating to NSTextInputClient.
|
||||
diff --git a/src/nsterm.m b/src/nsterm.m
|
||||
index b460beb00c..7c118045bd 100644
|
||||
index 8aa5b6ac1b..32eb04acef 100644
|
||||
--- a/src/nsterm.m
|
||||
+++ b/src/nsterm.m
|
||||
@@ -1275,7 +1275,7 @@ If a completion candidate is selected (overlay or child frame),
|
||||
@@ -224,7 +224,7 @@ index b460beb00c..7c118045bd 100644
|
||||
/* ===================================================================
|
||||
EmacsAccessibilityInteractiveSpan --- helpers and implementation
|
||||
=================================================================== */
|
||||
@@ -9682,6 +9774,7 @@ - (void)dealloc
|
||||
@@ -9683,6 +9775,7 @@ - (void)dealloc
|
||||
[layer release];
|
||||
#endif
|
||||
|
||||
@@ -232,7 +232,7 @@ index b460beb00c..7c118045bd 100644
|
||||
[[self menu] release];
|
||||
[super dealloc];
|
||||
}
|
||||
@@ -11030,6 +11123,32 @@ - (void)windowDidBecomeKey /* for direct calls */
|
||||
@@ -11031,6 +11124,32 @@ - (void)windowDidBecomeKey /* for direct calls */
|
||||
XSETFRAME (event.frame_or_window, emacsframe);
|
||||
kbd_buffer_store_event (&event);
|
||||
ns_send_appdefined (-1); // Kick main loop
|
||||
@@ -265,7 +265,7 @@ index b460beb00c..7c118045bd 100644
|
||||
}
|
||||
|
||||
|
||||
@@ -12267,6 +12386,332 @@ - (int) fullscreenState
|
||||
@@ -12268,6 +12387,332 @@ - (int) fullscreenState
|
||||
return fs_state;
|
||||
}
|
||||
|
||||
@@ -598,7 +598,7 @@ index b460beb00c..7c118045bd 100644
|
||||
@end /* EmacsView */
|
||||
|
||||
|
||||
@@ -14263,12 +14708,17 @@ Nil means use fullscreen the old (< 10.7) way. The old way works better with
|
||||
@@ -14264,12 +14709,17 @@ Nil means use fullscreen the old (< 10.7) way. The old way works better with
|
||||
ns_use_srgb_colorspace = YES;
|
||||
|
||||
DEFVAR_BOOL ("ns-accessibility-enabled", ns_accessibility_enabled,
|
||||
|
||||
Reference in New Issue
Block a user