diff options
Diffstat (limited to 'chromium/content/child/webthemeengine_impl_mac.cc')
-rw-r--r-- | chromium/content/child/webthemeengine_impl_mac.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/chromium/content/child/webthemeengine_impl_mac.cc b/chromium/content/child/webthemeengine_impl_mac.cc index dbd8f0bda68..f8aa72dbe3c 100644 --- a/chromium/content/child/webthemeengine_impl_mac.cc +++ b/chromium/content/child/webthemeengine_impl_mac.cc @@ -18,4 +18,65 @@ void WebThemeEngineMac::SetForcedColors( forced_colors_ = forced_colors; } +void WebThemeEngineMac::Paint(cc::PaintCanvas* canvas, + WebThemeEngine::Part part, + WebThemeEngine::State state, + const blink::WebRect& rect, + const WebThemeEngine::ExtraParams* extra_params, + blink::WebColorScheme color_scheme) { + if (IsScrollbarPart(part)) { + PaintMacScrollBarParts(canvas, part, state, rect, extra_params, + color_scheme); + return; + } + + WebThemeEngineDefault::Paint(canvas, part, state, rect, extra_params, + color_scheme); +} + +bool WebThemeEngineMac::IsScrollbarPart(WebThemeEngine::Part part) { + switch (part) { + case WebThemeEngine::kPartScrollbarHorizontalTrack: + case WebThemeEngine::kPartScrollbarVerticalTrack: + case WebThemeEngine::kPartScrollbarHorizontalThumb: + case WebThemeEngine::kPartScrollbarVerticalThumb: + case WebThemeEngine::kPartScrollbarCorner: + return true; + default: + return false; + } +} + +void WebThemeEngineMac::PaintMacScrollBarParts( + cc::PaintCanvas* canvas, + WebThemeEngine::Part part, + WebThemeEngine::State state, + const blink::WebRect& rect, + const WebThemeEngine::ExtraParams* extra_params, + blink::WebColorScheme color_scheme) { + ui::NativeTheme::ExtraParams native_theme_extra_params; + native_theme_extra_params.scrollbar_extra.is_hovering = + extra_params->scrollbar_extra.is_hovering; + native_theme_extra_params.scrollbar_extra.is_overlay = + extra_params->scrollbar_extra.is_overlay; + switch (extra_params->scrollbar_extra.orientation) { + case WebThemeEngine::kVerticalOnRight: + native_theme_extra_params.scrollbar_extra.orientation = + ui::NativeTheme::ScrollbarOrientation::kVerticalOnRight; + break; + case WebThemeEngine::kVerticalOnLeft: + native_theme_extra_params.scrollbar_extra.orientation = + ui::NativeTheme::ScrollbarOrientation::kVerticalOnLeft; + break; + case WebThemeEngine::kHorizontal: + native_theme_extra_params.scrollbar_extra.orientation = + ui::NativeTheme::ScrollbarOrientation::kHorizontal; + break; + } + + ui::NativeTheme::GetInstanceForNativeUi()->Paint( + canvas, NativeThemePart(part), NativeThemeState(state), gfx::Rect(rect), + native_theme_extra_params, NativeColorScheme(color_scheme)); +} + } // namespace content |