patches: fix all round-1 blockers (B1 B3 B5 B6)
B1 (0007): Fix dangling comment - change context line to deletion so
the opening comment of the removed ns_ax_face_is_selected function
is properly deleted, not left as an unclosed comment fragment that
would cause a compilation failure.
B3 (0002): Fix block_input/record_unwind_protect_void ordering in
two places in accessibilityRangeForPosition: and related method.
Correct order: block_input() BEFORE record_unwind_protect_void(),
so the unwind handler cannot call unblock_input without a matching
block_input even if specpdl_push fails.
B5 (0008): Replace goto skip_overlay_scan with proper if-block.
The goto skipped over ObjC variable declarations which is poor style
and would be flagged by Emacs maintainers. Restructure as
if (MINI_WINDOW_P (w) && !didTextChange) { ... }.
B6 (0008): Fix nlines < 128 to nlines < 512 in ns_ax_selected_child_
frame_text. Arrays line_starts[] and line_ends[] are declared with
size 512; the trailing-line guard used 128, silently dropping the
last line for buffers with 128-511 lines.
This commit is contained in:
@@ -206,8 +206,8 @@ index 3b923ee5fa..41c6b8dc14 100644
|
||||
+ /* Block input to prevent concurrent redisplay from modifying buffer
|
||||
+ state while we read text properties. Unwind-protected so
|
||||
+ block_input is always matched by unblock_input on signal. */
|
||||
+ record_unwind_protect_void (unblock_input);
|
||||
+ block_input ();
|
||||
+ record_unwind_protect_void (unblock_input);
|
||||
+ if (b != current_buffer)
|
||||
+ set_buffer_internal_1 (b);
|
||||
+
|
||||
@@ -1060,8 +1060,8 @@ index 3b923ee5fa..41c6b8dc14 100644
|
||||
+ so block_input is always matched by unblock_input, even if
|
||||
+ ensureTextCache triggers a Lisp signal (longjmp). */
|
||||
+ specpdl_ref count = SPECPDL_INDEX ();
|
||||
+ record_unwind_protect_void (unblock_input);
|
||||
+ block_input ();
|
||||
+ record_unwind_protect_void (unblock_input);
|
||||
+
|
||||
+ /* Find the glyph row at this y coordinate. */
|
||||
+ struct glyph_matrix *matrix = w->current_matrix;
|
||||
|
||||
@@ -223,10 +223,10 @@ index e4e43dd7a3..c9fe93a57b 100644
|
||||
charposForAccessibilityIndex which handles invisible text. */
|
||||
ptrdiff_t cp_start = charpos_start;
|
||||
ptrdiff_t cp_end = cp_start + charpos_len;
|
||||
@@ -7606,31 +7749,7 @@ already on the main queue (e.g., inside postAccessibilityUpdates
|
||||
@@ -7606,31 +7749,6 @@ already on the main queue (e.g., inside postAccessibilityUpdates
|
||||
freeing the main queue for VoiceOver's dispatch_sync calls. */
|
||||
|
||||
/* Return true if FACE (a symbol or list of symbols) looks like a
|
||||
|
||||
-/* Return true if FACE (a symbol or list of symbols) looks like a
|
||||
- "selected item" face. Substring match is intentionally broad ---
|
||||
- it catches vertico-current, icomplete-selected-match,
|
||||
- ivy-current-match, company-tooltip-selection, and similar.
|
||||
@@ -251,8 +251,7 @@ index e4e43dd7a3..c9fe93a57b 100644
|
||||
- return false;
|
||||
-}
|
||||
-
|
||||
-static inline void
|
||||
+ static inline void
|
||||
static inline void
|
||||
ns_ax_post_notification (id element,
|
||||
NSAccessibilityNotificationName name)
|
||||
{
|
||||
|
||||
@@ -477,8 +477,8 @@ index c9fe93a57b..f7574efb39 100644
|
||||
+ echo produced by postTextChangedNotification, making typed
|
||||
+ characters inaudible. VoiceOver should read the overlay
|
||||
+ candidate only when the user navigates (C-n/C-p), not types. */
|
||||
+ if (!MINI_WINDOW_P (w) || didTextChange)
|
||||
+ goto skip_overlay_scan;
|
||||
+ if (MINI_WINDOW_P (w) && !didTextChange)
|
||||
+ {
|
||||
+
|
||||
+ int selected_line = -1;
|
||||
+ NSString *candidate
|
||||
@@ -536,9 +536,9 @@ index c9fe93a57b..f7574efb39 100644
|
||||
+ annInfo);
|
||||
}
|
||||
}
|
||||
+ }
|
||||
}
|
||||
|
||||
+ skip_overlay_scan:
|
||||
/* --- Cursor moved or selection changed ---
|
||||
Independent check from the overlay branch above. */
|
||||
if (point != self.cachedPoint || markActive != self.cachedMarkActive)
|
||||
|
||||
Reference in New Issue
Block a user