[webkit-changes] [WebKit/WebKit] efe351: Correct <input type=checkbox switch> iOS focus ring

Anne van Kesteren noreply at github.com
Wed Dec 13 23:58:30 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: efe35104221863220f85ae234adc7081454180a0
      https://github.com/WebKit/WebKit/commit/efe35104221863220f85ae234adc7081454180a0
  Author: Anne van Kesteren <annevk at annevk.nl>
  Date:   2023-12-13 (Wed, 13 Dec 2023)

  Changed paths:
    M Source/WebCore/rendering/RenderTheme.cpp
    M Source/WebCore/rendering/RenderTheme.h
    M Source/WebCore/rendering/RenderThemeIOS.h
    M Source/WebCore/rendering/RenderThemeIOS.mm

  Log Message:
  -----------
  Correct <input type=checkbox switch> iOS focus ring
https://bugs.webkit.org/show_bug.cgi?id=266281
rdar://119555352

Reviewed by Aditya Keerthi.

Make RenderThemeIOS build on ControlStyle::State rather than
ControlStates::States. The ControlStates architecture is dated, does
not account for shadow hosts, and should probably be disappeared
entirely. This is an incremental step towards that goal.

Then provide the switch's thumb painting code has access to the system
outline color.

And ensure that by default we don't draw an outline for a switch on
iOS. Web developers can override this by using a non-auto outline-style
value, but that will not draw the outline around the thumb.

* Source/WebCore/rendering/RenderTheme.cpp:
(WebCore::RenderTheme::extractControlStyleStatesForRendererInternal const):
(WebCore::adjustRendererForAppearance):
(WebCore::RenderTheme::extractControlStyleStatesForRenderer const):
(WebCore::RenderTheme::extractControlStyleForRenderer const):
* Source/WebCore/rendering/RenderTheme.h:
* Source/WebCore/rendering/RenderThemeIOS.h:
* Source/WebCore/rendering/RenderThemeIOS.mm:
(WebCore::renderThemePaintSwitchThumb):
(WebCore::renderThemePaintSwitchTrack):
(WebCore::RenderThemeIOS::adjustSwitchStyle const):
(WebCore::RenderThemeIOS::paintSwitchThumb):
(WebCore::RenderThemeIOS::paintSwitchTrack):
(WebCore::RenderThemeIOS::checkboxRadioBorderColor):
(WebCore::RenderThemeIOS::checkboxRadioBackgroundColor):
(WebCore::RenderThemeIOS::checkboxRadioBackgroundGradient):
(WebCore::RenderThemeIOS::checkboxRadioIndicatorColor):
(WebCore::RenderThemeIOS::paintCheckboxRadioInnerShadow):
(WebCore::RenderThemeIOS::paintCheckbox):
(WebCore::RenderThemeIOS::paintRadio):

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




More information about the webkit-changes mailing list