patches: reduce completion tracking rate-limit from 500ms to 50ms

500ms (2 Hz) was too aggressive — Zoom focus stopped updating during
keyboard navigation in Vertico/Corfu lists.  50ms (20 Hz) tracks
fast arrow-key navigation while still avoiding per-frame overhead.
UAZoomEnabled() is already cached so the main cost is the overlay
scan, which is cheap.
This commit is contained in:
2026-03-01 06:30:01 +01:00
parent 63f0e899ce
commit cc7b288e99
9 changed files with 75 additions and 74 deletions

View File

@@ -1,4 +1,4 @@
From d2436b4215e5480d35f88fcb5b78fb8f8e44945d Mon Sep 17 00:00:00 2001
From 7b4c8fc93674296aac802377ad223db50f79f33d Mon Sep 17 00:00:00 2001
From: Martin Sukany <martin@sukany.cz>
Date: Sat, 28 Feb 2026 12:58:11 +0100
Subject: [PATCH 6/9] ns: integrate accessibility with EmacsView and redisplay
@@ -51,10 +51,10 @@ index 80661a9..2b1f9e6 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 d2a5a58..c796840 100644
index 5eaf480..1577338 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1404,6 +1404,9 @@ so the visual offset is (ov_line + 1) * line_h from
@@ -1405,6 +1405,9 @@ so the visual offset is (ov_line + 1) * line_h from
if (view)
ns_zoom_track_completion (f, view);
#endif /* NS_IMPL_COCOA */
@@ -64,7 +64,7 @@ index d2a5a58..c796840 100644
}
static void
@@ -7619,7 +7622,6 @@ - (id)accessibilityTopLevelUIElement
@@ -7620,7 +7623,6 @@ - (id)accessibilityTopLevelUIElement
@@ -72,7 +72,7 @@ index d2a5a58..c796840 100644
static BOOL
ns_ax_find_completion_overlay_range (struct buffer *b, ptrdiff_t point,
ptrdiff_t *out_start,
@@ -8721,7 +8723,6 @@ - (NSRect)accessibilityFrame
@@ -8722,7 +8724,6 @@ - (NSRect)accessibilityFrame
@end
@@ -80,7 +80,7 @@ index d2a5a58..c796840 100644
/* ===================================================================
EmacsAccessibilityBuffer (Notifications) — AX event dispatch
@@ -9266,7 +9267,6 @@ - (NSRect)accessibilityFrame
@@ -9267,7 +9268,6 @@ - (NSRect)accessibilityFrame
@end
@@ -88,7 +88,7 @@ index d2a5a58..c796840 100644
/* ===================================================================
EmacsAccessibilityInteractiveSpan — helpers and implementation
=================================================================== */
@@ -9596,6 +9596,7 @@ - (void)dealloc
@@ -9597,6 +9597,7 @@ - (void)dealloc
[layer release];
#endif
@@ -96,7 +96,7 @@ index d2a5a58..c796840 100644
[[self menu] release];
[super dealloc];
}
@@ -10944,6 +10945,32 @@ - (void)windowDidBecomeKey /* for direct calls */
@@ -10945,6 +10946,32 @@ - (void)windowDidBecomeKey /* for direct calls */
XSETFRAME (event.frame_or_window, emacsframe);
kbd_buffer_store_event (&event);
ns_send_appdefined (-1); // Kick main loop
@@ -129,7 +129,7 @@ index d2a5a58..c796840 100644
}
@@ -12181,6 +12208,332 @@ - (int) fullscreenState
@@ -12182,6 +12209,332 @@ - (int) fullscreenState
return fs_state;
}