Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e1b0c991f15929b735801f04b579638cf2c6ed96
      
https://github.com/WebKit/WebKit/commit/e1b0c991f15929b735801f04b579638cf2c6ed96
  Author: Alan Baradlay <[email protected]>
  Date:   2026-01-07 (Wed, 07 Jan 2026)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/css/cssom-view/elementsFromPoint-svg-text-expected.txt
    A LayoutTests/svg/hittest/text-overlapped-expected.txt
    A LayoutTests/svg/hittest/text-overlapped.html
    M Source/WebCore/layout/integration/inline/InlineIteratorBox.cpp
    M Source/WebCore/layout/integration/inline/InlineIteratorBox.h
    M Source/WebCore/layout/integration/inline/InlineIteratorBoxLegacyPath.h
    M Source/WebCore/layout/integration/inline/InlineIteratorBoxModernPath.h
    M Source/WebCore/layout/integration/inline/InlineIteratorLineBox.cpp
    M Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.cpp
    M Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.h
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
    M Source/WebCore/rendering/svg/RenderSVGText.cpp

  Log Message:
  -----------
  Reverse traversal order in `hitTestInlineBoxes` for SVG Text
https://bugs.webkit.org/show_bug.cgi?id=304805

Reviewed by Antti Koivisto.

(Test case, implementation logic and commit message credits go to Ahmad Saleem)

This patch aligns WebKit with Gecko / Firefox and Blink / Chromium.

Inspired by (Test - Merge): 
https://chromium.googlesource.com/chromium/src.git/+/9bb752c62627ce6584b6834d4f9e3ad0ed303a78

Text painted later should make the top-most node, so line boxes should
be visited front-to-back. This will generally only make a difference for
text nodes that overlap.

This will also make a difference when elementsFromPoint is fixed, since
then we'll add the hit elements in the required "innermost to outermost"
order.

Test: svg/hittest/text-overlapped.html

* 
LayoutTests/imported/w3c/web-platform-tests/css/cssom-view/elementsFromPoint-svg-text-expected.txt:
* LayoutTests/svg/hittest/text-overlapped-expected.txt: Added.
* LayoutTests/svg/hittest/text-overlapped.html: Added.
* Source/WebCore/layout/integration/inline/InlineIteratorBox.cpp: Implement 
bidirectional traversal for BoxIterator to support hittest use case.
(WebCore::InlineIterator::BoxIterator::traverseLineLeftwardOnLine):
* Source/WebCore/layout/integration/inline/InlineIteratorBox.h:
(WebCore::InlineIterator::BoxIterator::operator--):
* Source/WebCore/layout/integration/inline/InlineIteratorBoxLegacyPath.h:
(WebCore::InlineIterator::BoxLegacyPath::traversePreviousBoxOnLine):
(WebCore::InlineIterator::BoxLegacyPath::traversePreviousBoxOnLineSkippingChildren):
* Source/WebCore/layout/integration/inline/InlineIteratorBoxModernPath.h:
(WebCore::InlineIterator::BoxModernPath::traversePreviousBoxOnLine):
* Source/WebCore/layout/integration/inline/InlineIteratorLineBox.cpp:
* Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.cpp:
(WebCore::InlineIterator::lastBoxFor):
* Source/WebCore/layout/integration/inline/InlineIteratorSVGTextBox.h:
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::firstRootInlineBox const):
(WebCore::LayoutIntegration::LineLayout::lastRootInlineBox const):
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::hitTestInlineChildren):

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



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

Reply via email to