Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d9b43d246262ba0832806f7aa7dcb6e6fbc4806f
      
https://github.com/WebKit/WebKit/commit/d9b43d246262ba0832806f7aa7dcb6e6fbc4806f
  Author: Said Abou-Hallawa <s...@apple.com>
  Date:   2023-02-22 (Wed, 22 Feb 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/mac/controls/ButtonMac.mm
    M Source/WebCore/platform/graphics/mac/controls/ColorWellMac.mm
    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/ImageControlsButtonMac.mm
    M Source/WebCore/platform/graphics/mac/controls/InnerSpinButtonMac.mm
    M Source/WebCore/platform/graphics/mac/controls/MenuListButtonMac.mm
    M Source/WebCore/platform/graphics/mac/controls/MenuListMac.mm
    M Source/WebCore/platform/graphics/mac/controls/MeterMac.mm
    M Source/WebCore/platform/graphics/mac/controls/ProgressBarMac.mm
    M 
Source/WebCore/platform/graphics/mac/controls/SearchFieldCancelButtonMac.mm
    M Source/WebCore/platform/graphics/mac/controls/SearchFieldMac.mm
    M Source/WebCore/platform/graphics/mac/controls/SearchFieldResultsMac.mm
    M Source/WebCore/platform/graphics/mac/controls/SliderThumbMac.mm
    M Source/WebCore/platform/graphics/mac/controls/SliderTrackMac.mm
    M Source/WebCore/platform/graphics/mac/controls/TextAreaMac.mm
    M Source/WebCore/platform/graphics/mac/controls/TextFieldMac.mm
    M Source/WebCore/platform/graphics/mac/controls/ToggleButtonMac.mm

  Log Message:
  -----------
  [GPU Process][FormControls] Don't create a fake NSView if viewless cell 
drawing is supported
https://bugs.webkit.org/show_bug.cgi?id=252723
rdar://105778966

Reviewed by Aditya Keerthi.

Currently, we create an NSView unconditionally which may or may not be used.
Creating the fake NSView should be restricted to the case when the viewless
drawing is not supported.

Because viewless cell drawing is still in progress, we are going to enable it if
GPUP is enabled on macOS only for now.

This will require moving the call to ControlFactoryMac::drawingView() from the
super classes `draw()` methods deeper inside the base class ControlMac methods
after we check `supportsViewlessCells()` and find it is false.

The call to `[window setDefaultButtonCell:buttonCell]` was removed from drawing
the default button. We call `[m_defaultButtonCell setKeyEquivalent:@"\r"]` when
creating the NSButtonCell for the default button. And this is sufficient to make
the drawing correct: the dark background and the white text.

The calls to [sliderCell startTrackingAt:] and [sliderCell stopTracking:] were
removed also. The methods seem to be related to interacting with NSSliderCell
and they do not affect the drawing. The interaction with the SliderThumb part is
managed by WebKit which decides where to display this control part.

ControlMac::drawCellOrFocusRing() should be responsible of creating an instance
of LocalCurrentGraphicsContext because the caller which is 
`ControlMac::drawCell()`
may change the drawing GraphicsContext to an intermediate ImageBuffer for 
scaling.

For clarity, make instantiating an instance of LocalDefaultSystemAppearance and
an instance of GraphicsContextStateSaver if needed be the responsibility of the
super classes `draw()` methods.

Another clean-up was added. The exception block controls can be moved from the
super classes `draw()` methods to ControlMac::drawCellOrFocusRing().

* Source/WebCore/platform/graphics/mac/controls/ButtonMac.mm:
(WebCore::ButtonMac::draw):
* Source/WebCore/platform/graphics/mac/controls/ColorWellMac.mm:
(WebCore::ColorWellMac::draw):
* Source/WebCore/platform/graphics/mac/controls/ControlMac.h:
* Source/WebCore/platform/graphics/mac/controls/ControlMac.mm:
(WebCore::supportsViewlessCells):
(WebCore::drawViewlessCell):
(WebCore::ControlMac::drawCellInternal):
(WebCore::drawViewlessCellFocusRing):
(WebCore::ControlMac::drawCellFocusRingInternal):
(WebCore::ControlMac::drawCellFocusRing):
(WebCore::ControlMac::drawCellOrFocusRing):
(WebCore::ControlMac::drawCell):
(WebCore::ControlMac::drawListButton):
(WebCore::drawCellFocusRing): Deleted.
* Source/WebCore/platform/graphics/mac/controls/ImageControlsButtonMac.mm:
(WebCore::ImageControlsButtonMac::draw):
* Source/WebCore/platform/graphics/mac/controls/MenuListMac.mm:
(WebCore::MenuListMac::draw):
* Source/WebCore/platform/graphics/mac/controls/MeterMac.mm:
(WebCore::MeterMac::draw):
* Source/WebCore/platform/graphics/mac/controls/SearchFieldCancelButtonMac.mm:
(WebCore::SearchFieldCancelButtonMac::draw):
* Source/WebCore/platform/graphics/mac/controls/SearchFieldMac.mm:
(WebCore::SearchFieldMac::draw):
* Source/WebCore/platform/graphics/mac/controls/SearchFieldResultsMac.mm:
(WebCore::SearchFieldResultsMac::draw):
* Source/WebCore/platform/graphics/mac/controls/SliderThumbMac.mm:
(WebCore::SliderThumbMac::updateCellStates):
(WebCore::SliderThumbMac::draw):
* Source/WebCore/platform/graphics/mac/controls/SliderTrackMac.mm:
(WebCore::SliderTrackMac::draw):
* Source/WebCore/platform/graphics/mac/controls/TextFieldMac.mm:
(WebCore::TextFieldMac::draw):
* Source/WebCore/platform/graphics/mac/controls/ToggleButtonMac.mm:
(WebCore::ToggleButtonMac::draw):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to