patches: fix Corfu Zoom tracking — replace rate-limit with parent-frame guard

Root cause: the 50ms rate limit broke child-frame (Corfu) tracking.
When the Corfu child frame redraws, its ns_update_end fires first and
resets the rate-limit timer.  When the parent frame's ns_update_end
fires immediately after, the timer has not expired, so
ns_zoom_track_completion returns early without scanning child frames.
Zoom focus stays on the first candidate.

Fix: remove the rate limit; add a FRAME_PARENT_FRAME(f) guard instead.
Child frames have no completion children to scan; their parent's
ns_update_end does the scan via FOR_EACH_FRAME.  Returning early on
child-frame calls avoids the redundant scan and leaves the timer
problem moot.  Overhead without the rate limit is ~40 Lisp evaluations
per redisplay (~5-20 µs), acceptable given ns_zoom_enabled_p() already
caches the UAZoomEnabled() IPC call.
This commit is contained in:
2026-03-01 07:11:00 +01:00
parent 19cc43dbbb
commit c4975c3fe4
9 changed files with 83 additions and 86 deletions

View File

@@ -1,4 +1,4 @@
From e2213409bca76154764263879b4bd43459230d6c Mon Sep 17 00:00:00 2001
From ca89e85f199e054a6cef6272425d2920e55b2ea5 Mon Sep 17 00:00:00 2001
From: Martin Sukany <martin@sukany.cz>
Date: Sat, 28 Feb 2026 12:58:11 +0100
Subject: [PATCH 7/9] doc: add VoiceOver accessibility section to macOS