Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 333b4b2030a128aebb08c23403fb50e4465172ca
      
https://github.com/WebKit/WebKit/commit/333b4b2030a128aebb08c23403fb50e4465172ca
  Author: Gerald Squelart <[email protected]>
  Date:   2023-06-06 (Tue, 06 Jun 2023)

  Changed paths:
    M LayoutTests/fast/attachment/cocoa/wide-attachment-save-event-expected.txt
    M 
LayoutTests/fast/attachment/mac/wide-attachment-image-controls-basic-expected.txt
    M 
LayoutTests/platform/ios-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt
    M 
LayoutTests/platform/mac-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt
    M Source/WebCore/html/HTMLAttachmentElement.cpp
    M Source/WebCore/html/HTMLAttachmentElement.h
    M Source/WebCore/html/shadow/attachmentElementShadow.css
    M Source/WebCore/rendering/RenderAttachment.cpp
    M Source/WebCore/rendering/RenderAttachment.h
    M Source/WebCore/rendering/RenderThemeIOS.mm
    M Source/WebCore/rendering/RenderThemeMac.mm

  Log Message:
  -----------
  Use RenderAttachment for wide-layout attachments, with some modified layout 
and rendering
https://bugs.webkit.org/show_bug.cgi?id=256637
rdar://108157331

Reviewed by Alan Baradlay.

A lot of the editor code interacting with attachments relies on the renderer 
being exactly `RenderAttachment`, which led to some misbehavior when the 
wide-layout attachment was using the more generic `RenderBlockFlow`.
So now the renderer is always `RenderAttachment`, but the layout and rendering 
paths redirect to special wide-layout-only functions.

* LayoutTests/fast/attachment/cocoa/wide-attachment-save-event-expected.txt:
* 
LayoutTests/fast/attachment/mac/wide-attachment-image-controls-basic-expected.txt:
* 
LayoutTests/platform/ios-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt:
* 
LayoutTests/platform/mac-wk2/fast/attachment/cocoa/wide-attachment-rendering-expected.txt:
* Source/WebCore/html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::createElementRenderer):
Always return a `RenderAttachment`, like it was before introducing the 
wide-layout styling.

(WebCore::HTMLAttachmentElement::insertedIntoAncestor):
Because of how the root element does the layout, the shadow root element's 
margins were ignored, so now the margins are added here in the root element.

* Source/WebCore/html/HTMLAttachmentElement.h:
* Source/WebCore/html/shadow/attachmentElementShadow.css:
(div#attachment-container):
Since the margin is now in the top-level element outside the shadow tree, it is 
not needed here anymore.

(div#attachment-container::selection): Deleted.
The selection coloring is handled by the `RenderReplaced` painting code, so 
this styling was ignored anyway.

* Source/WebCore/rendering/RenderAttachment.cpp:
(WebCore::RenderAttachment::RenderAttachment):
(WebCore::RenderAttachment::layoutWideLayoutAttachmentOnly):
(WebCore::RenderAttachment::layout):
Layout the wide-layout shadow tree if present, the "replaced" and shadow 
content layouts are still performed to handle all the necessary sizing and 
optional image controls.

(WebCore::RenderAttachment::paintWideLayoutAttachmentOnly const):
New wide-layout paint code, handling the full Foreground and Selection phases 
and painting everything in the shadow tree.

* Source/WebCore/rendering/RenderAttachment.h:
Cleaned up "Shadow" functions, to separate just "shadow controls" (like image 
controls) and any "shadow content" that may include the wide-layout shadow tree.
Also let the `RenderReplaced` painting code handle the selection tint.

* Source/WebCore/rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::paintAttachment):
* Source/WebCore/rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintAttachment):
When actually painting a wide-layout attachment, skip the legacy painting.

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to