patches: add Zoom completion tracking (overlay + child frame)

Zoom patch 0000 now tracks completion candidates:
- Overlay: Vertico, Icomplete, Ivy (face heuristic on before-string)
- Child frame: Corfu, Company-box (scan buffer text for selected face)
Also fixes duplicate lastCursorRect ivar when applied with VoiceOver.
This commit is contained in:
2026-03-01 03:38:58 +01:00
parent 9110eee881
commit b283068f82
9 changed files with 340 additions and 86 deletions

View File

@@ -1,4 +1,4 @@
From 16e60a514212d8e5e541eb731db242b2bcd1bca2 Mon Sep 17 00:00:00 2001
From 62e619d508d4ce3b3bf0f8dd959041bcd9a75350 Mon Sep 17 00:00:00 2001
From: Martin Sukany <martin@sukany.cz>
Date: Sat, 28 Feb 2026 16:01:29 +0100
Subject: [PATCH 9/9] ns: announce child frame completion candidates for
@@ -71,10 +71,10 @@ index 4825cf9..97777e2 100644
To disable the accessibility interface entirely (for instance, to
eliminate overhead on systems where assistive technology is not in
diff --git a/etc/NEWS b/etc/NEWS
index f48d05b..ec4b95e 100644
index 2b1f9e6..8a40850 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -4401,8 +4401,8 @@ send user data to Apple's speech recognition servers.
@@ -4404,8 +4404,8 @@ send user data to Apple's speech recognition servers.
** VoiceOver accessibility support on macOS.
Emacs now exposes buffer content, cursor position, and interactive
elements to the macOS accessibility subsystem (VoiceOver). This
@@ -109,10 +109,10 @@ index 2102fb9..2fc4de4 100644
@end
diff --git a/src/nsterm.m b/src/nsterm.m
index 9e089f3..1a623be 100644
index b9b2a80..dc49417 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7082,6 +7082,112 @@ visual line index for Zoom (skip whitespace-only lines
@@ -7296,6 +7296,112 @@ visual line index for Zoom (skip whitespace-only lines
return nil;
}
@@ -225,7 +225,7 @@ index 9e089f3..1a623be 100644
/* Build accessibility text for window W, skipping invisible text.
Populates *OUT_START with the buffer start charpos.
Populates *OUT_RUNS with an array of visible runs and *OUT_NRUNS
@@ -12321,6 +12427,77 @@ - (id)accessibilityFocusedUIElement
@@ -12535,6 +12641,77 @@ - (id)accessibilityFocusedUIElement
The existing elements carry cached state (modiff, point) from the
previous redisplay cycle. Rebuilding first would create fresh
elements with current values, making change detection impossible. */
@@ -303,7 +303,7 @@ index 9e089f3..1a623be 100644
- (void)postAccessibilityUpdates
{
NSTRACE ("[EmacsView postAccessibilityUpdates]");
@@ -12331,11 +12508,59 @@ - (void)postAccessibilityUpdates
@@ -12545,11 +12722,59 @@ - (void)postAccessibilityUpdates
/* Re-entrance guard: VoiceOver callbacks during notification posting
can trigger redisplay, which calls ns_update_end, which calls us