[webkit-changes] [WebKit/WebKit] b8b3d9: [GPU Process] [FormControls] Make it possible to d...
Said Abou-Hallawa
noreply at github.com
Mon Feb 13 11:14:05 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b8b3d9929d7dafe50bb11efb9bb066c4d81d0bab
https://github.com/WebKit/WebKit/commit/b8b3d9929d7dafe50bb11efb9bb066c4d81d0bab
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-02-13 (Mon, 13 Feb 2023)
Changed paths:
M Source/WebCore/PAL/pal/spi/mac/NSCellSPI.h
M Source/WebCore/platform/graphics/mac/controls/ControlMac.h
M Source/WebCore/platform/graphics/mac/controls/ControlMac.mm
M Source/WebCore/platform/graphics/mac/controls/WebControlView.mm
Log Message:
-----------
[GPU Process] [FormControls] Make it possible to draw a viewless NSCell
https://bugs.webkit.org/show_bug.cgi?id=252003
rdar://105233927
Reviewed by Aditya Keerthi.
AppKit crashes if [NSCell drawWithFrame] is called out of the main thread with a
non-nil NSView. And this is why a hack was added to WebControlWindow to silence
this crash in 257981 at main. To fix the crash and to remove the hack, a nil NSView
will be passed to [NSCell drawWithFrame] instead of passing the fake one.
To provide the [NSCell drawWithFrame] with the settings that it used to get from
the fake NSView, new AppKit SPIs will be used to explicitly set them from the
drawing. An NSCell can be drawn without an NSView only if these SPIs are available.
* Source/WebCore/PAL/pal/spi/mac/NSCellSPI.h:
* Source/WebCore/platform/graphics/mac/controls/ControlMac.h:
* Source/WebCore/platform/graphics/mac/controls/ControlMac.mm:
(WebCore::supportsViewlessCells):
(WebCore::shouldFlipContext):
(WebCore::applyViewlessCellSettings):
(WebCore::drawViewlessCell):
(WebCore::drawCellInView):
(WebCore::drawCellFocusRingInView):
(WebCore::drawCellFocusRing):
(WebCore::ControlMac::drawCellOrFocusRing):
(WebCore::ControlMac::drawCell):
(WebCore::drawFocusRing): Deleted.
(WebCore::drawCellOrFocusRing): Deleted.
* Source/WebCore/platform/graphics/mac/controls/WebControlView.mm:
Canonical link: https://commits.webkit.org/260210@main
More information about the webkit-changes
mailing list