diff --git a/patches/0001-ns-implement-AXBoundsForRange-for-macOS-Zoom-cursor-.patch b/patches/0001-ns-implement-AXBoundsForRange-for-macOS-Zoom-cursor-.patch index 2424d7e..b874d6c 100644 --- a/patches/0001-ns-implement-AXBoundsForRange-for-macOS-Zoom-cursor-.patch +++ b/patches/0001-ns-implement-AXBoundsForRange-for-macOS-Zoom-cursor-.patch @@ -5,14 +5,19 @@ Subject: [PATCH] ns: add macOS Zoom cursor tracking and VoiceOver accessibility Dual accessibility: UAZoomChangeFocus for Zoom + virtual element tree for VoiceOver. Notifications target the focused virtual element, not EmacsView. Full hierarchy plumbing (accessibilityWindow, accessibilityParent, etc.). -MRC compatible. +MRC compatible. Single notification path (post-redisplay only) with +glyph-consistent coordinate system throughout. --- ---- a/src/nsterm.h 2026-02-26 08:46:18.118172281 +0100 -+++ b/src/nsterm.h 2026-02-26 09:08:57.204955708 +0100 -@@ -455,6 +455,34 @@ +diff --git a/src/nsterm.h b/src/nsterm.h +index 7c1ee4c..1f9639c 100644 +--- a/src/nsterm.h ++++ b/src/nsterm.h +@@ -453,6 +453,34 @@ enum ns_return_frame_mode + @end - /* ========================================================================== ++/* ========================================================================== ++ + Accessibility virtual elements (macOS / Cocoa only) + + ========================================================================== */ @@ -39,12 +44,10 @@ MRC compatible. +#endif /* NS_IMPL_COCOA */ + + -+/* ========================================================================== -+ - The main Emacs view + /* ========================================================================== - ========================================================================== */ -@@ -471,6 +499,12 @@ + The main Emacs view +@@ -471,6 +499,11 @@ enum ns_return_frame_mode #ifdef NS_IMPL_COCOA char *old_title; BOOL maximizing_resize; @@ -56,7 +59,7 @@ MRC compatible. #endif BOOL font_panel_active; NSFont *font_panel_result; -@@ -528,6 +562,12 @@ +@@ -528,6 +561,12 @@ enum ns_return_frame_mode - (void)windowWillExitFullScreen; - (void)windowDidExitFullScreen; - (void)windowDidBecomeKey; @@ -69,9 +72,11 @@ MRC compatible. @end ---- a/src/nsterm.m 2026-02-26 08:46:18.124172384 +0100 -+++ b/src/nsterm.m 2026-02-26 10:46:54.607568839 +0100 -@@ -1104,6 +1104,11 @@ +diff --git a/src/nsterm.m b/src/nsterm.m +index 932d209..077f092 100644 +--- a/src/nsterm.m ++++ b/src/nsterm.m +@@ -1104,6 +1104,11 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) unblock_input (); ns_updating_frame = NULL; @@ -83,7 +88,7 @@ MRC compatible. } static void -@@ -3232,6 +3237,82 @@ +@@ -3232,6 +3237,37 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. /* Prevent the cursor from being drawn outside the text area. */ r = NSIntersectionRect (r, ns_row_rect (w, glyph_row, TEXT_AREA)); @@ -121,10 +126,12 @@ MRC compatible. ns_focus (f, NULL, 0); NSGraphicsContext *ctx = [NSGraphicsContext currentContext]; -@@ -6849,6 +6930,646 @@ - - /* ========================================================================== +@@ -6847,6 +6883,652 @@ - (BOOL)fulfillService: (NSString *)name withArg: (NSString *)arg + } + #endif ++/* ========================================================================== ++ + Accessibility virtual elements (macOS / Cocoa only) + + ========================================================================== */ @@ -769,12 +776,10 @@ MRC compatible. +#endif /* NS_IMPL_COCOA */ + + -+/* ========================================================================== -+ - EmacsView implementation + /* ========================================================================== - ========================================================================== */ -@@ -6889,6 +7610,7 @@ + EmacsView implementation +@@ -6889,6 +7571,7 @@ - (void)dealloc [layer release]; #endif @@ -782,7 +787,7 @@ MRC compatible. [[self menu] release]; [super dealloc]; } -@@ -8237,6 +8959,18 @@ +@@ -8237,6 +8920,18 @@ - (void)windowDidBecomeKey /* for direct calls */ XSETFRAME (event.frame_or_window, emacsframe); kbd_buffer_store_event (&event); ns_send_appdefined (-1); // Kick main loop @@ -801,7 +806,7 @@ MRC compatible. } -@@ -9474,6 +10208,391 @@ +@@ -9474,6 +10169,213 @@ - (int) fullscreenState return fs_state; } @@ -1015,7 +1020,7 @@ MRC compatible. @end /* EmacsView */ -@@ -9941,6 +11060,14 @@ +@@ -9941,6 +10843,14 @@ - (id)accessibilityAttributeValue:(NSString *)attribute return [super accessibilityAttributeValue:attribute]; }