Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dff761891a67d0fd7c8b5cffb905044f1be6d018
      
https://github.com/WebKit/WebKit/commit/dff761891a67d0fd7c8b5cffb905044f1be6d018
  Author: Utku Uckun <[email protected]>
  Date:   2026-08-05 (Wed, 05 Aug 2026)

  Changed paths:
    M Source/WebKit/UIProcess/mac/WebViewImpl.mm

  Log Message:
  -----------
  AX: VoiceOver cursor not in sync with mail content breaking Intelligent Image 
Descriptions
https://bugs.webkit.org/show_bug.cgi?id=321101
rdar://183950889

Reviewed by Tyler Wilcock.

VoiceOver's reported AXFrame for elements inside a WKWebView could go stale
whenever the view's position on screen changed for a reason other than the
containing window resizing -- e.g. the window moving, or an ancestor
NSScrollView/NSClipView repositioning the view (as Mail does when scrolling
its unified conversation view, which hosts message bodies in WKWebViews with
their own internal scrolling disabled).

The screen-space AXFrame for any element is computed by combining a
live, content-space rect with a cached per-frame AXFrameGeometry (screen
position + scale) via AccessibilityObject::convertFrameToSpace(). That
geometry is not recomputed automatically; it must be explicitly refreshed via
WebPageProxy::updateAccessibilityFrameGeometry(). WebViewImpl only called
this from windowDidMove(), so any other path that changes the view's
window-relative frame -- notably renewGState(), which AppKit calls whenever
a view's on-screen position changes for any reason, including an ancestor
view scrolling -- never refreshed it.

Fix this by moving the refresh into updateWindowAndViewFrames()'s deferred
dispatch block, which is the single chokepoint shared by every caller that
can change the view's window-relative frame (renewGState, windowDidMove,
windowDidResize, viewDidMoveToWindow, and others), rather than patching
individual call sites.

* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::updateWindowAndViewFrames):

Canonical link: https://commits.webkit.org/318679@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to