diff --git a/atom/browser/api/atom_api_browser_window.cc b/atom/browser/api/atom_api_browser_window.cc index 140a6a152a..d6d0cf5daf 100644 --- a/atom/browser/api/atom_api_browser_window.cc +++ b/atom/browser/api/atom_api_browser_window.cc @@ -13,6 +13,7 @@ #include "atom/browser/web_contents_preferences.h" #include "atom/browser/window_list.h" #include "atom/common/api/api_messages.h" +#include "atom/common/color_util.h" #include "atom/common/native_mate_converters/callback.h" #include "atom/common/native_mate_converters/file_path_converter.h" #include "atom/common/native_mate_converters/gfx_converter.h" @@ -770,7 +771,11 @@ bool BrowserWindow::IsKiosk() { } void BrowserWindow::SetBackgroundColor(const std::string& color_name) { - window_->SetBackgroundColor(color_name); + SkColor color = ParseHexColor(color_name); + window_->SetBackgroundColor(color); + auto* view = web_contents()->GetRenderWidgetHostView(); + if (view) + view->SetBackgroundColor(color); } void BrowserWindow::SetHasShadow(bool has_shadow) { diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index 0dbb3eb0ed..e1d9748af4 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -12,6 +12,7 @@ #include "atom/browser/atom_browser_main_parts.h" #include "atom/browser/browser.h" #include "atom/browser/window_list.h" +#include "atom/common/color_util.h" #include "atom/common/draggable_region.h" #include "atom/common/native_mate_converters/file_path_converter.h" #include "atom/common/options_switches.h" @@ -172,10 +173,10 @@ void NativeWindow::InitFromOptions(const mate::Dictionary& options) { } std::string color; if (options.Get(options::kBackgroundColor, &color)) { - SetBackgroundColor(color); + SetBackgroundColor(ParseHexColor(color)); } else if (!transparent()) { // For normal window, use white as default background. - SetBackgroundColor("#FFFF"); + SetBackgroundColor(SK_ColorWHITE); } std::string title(Browser::Get()->GetName()); options.Get(options::kTitle, &title); diff --git a/atom/browser/native_window.h b/atom/browser/native_window.h index 3badaf641b..32aef493c3 100644 --- a/atom/browser/native_window.h +++ b/atom/browser/native_window.h @@ -138,7 +138,7 @@ class NativeWindow : public base::SupportsUserData, virtual bool IsSimpleFullScreen() = 0; virtual void SetKiosk(bool kiosk) = 0; virtual bool IsKiosk() = 0; - virtual void SetBackgroundColor(const std::string& color_name) = 0; + virtual void SetBackgroundColor(SkColor color) = 0; virtual void SetHasShadow(bool has_shadow) = 0; virtual bool HasShadow() = 0; virtual void SetOpacity(const double opacity) = 0; diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index 2d856aa9a9..84ad0ba53c 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -79,7 +79,7 @@ class NativeWindowMac : public NativeWindow { bool IsSimpleFullScreen() override; void SetKiosk(bool kiosk) override; bool IsKiosk() override; - void SetBackgroundColor(const std::string& color_name) override; + void SetBackgroundColor(SkColor color) override; void SetHasShadow(bool has_shadow) override; bool HasShadow() override; void SetOpacity(const double opacity) override; diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 935dd7fbae..2fa9a2a612 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -12,7 +12,6 @@ #include "atom/browser/native_browser_view_mac.h" #include "atom/browser/ui/cocoa/atom_touch_bar.h" #include "atom/browser/window_list.h" -#include "atom/common/color_util.h" #include "atom/common/draggable_region.h" #include "atom/common/options_switches.h" #include "base/mac/mac_util.h" @@ -1475,15 +1474,10 @@ bool NativeWindowMac::IsKiosk() { return is_kiosk_; } -void NativeWindowMac::SetBackgroundColor(const std::string& color_name) { - SkColor color = ParseHexColor(color_name); +void NativeWindowMac::SetBackgroundColor(SkColor color) { base::ScopedCFTypeRef cgcolor( skia::CGColorCreateFromSkColor(color)); [[[window_ contentView] layer] setBackgroundColor:cgcolor]; - - const auto view = web_contents()->GetRenderWidgetHostView(); - if (view) - view->SetBackgroundColor(color); } void NativeWindowMac::SetHasShadow(bool has_shadow) { diff --git a/atom/browser/native_window_views.cc b/atom/browser/native_window_views.cc index 895f1b07f7..9d7f2ba195 100644 --- a/atom/browser/native_window_views.cc +++ b/atom/browser/native_window_views.cc @@ -16,7 +16,6 @@ #include "atom/browser/web_contents_preferences.h" #include "atom/browser/web_view_manager.h" #include "atom/browser/window_list.h" -#include "atom/common/color_util.h" #include "atom/common/draggable_region.h" #include "atom/common/native_mate_converters/image_converter.h" #include "atom/common/options_switches.h" @@ -792,9 +791,8 @@ bool NativeWindowViews::IsKiosk() { return IsFullscreen(); } -void NativeWindowViews::SetBackgroundColor(const std::string& color_name) { +void NativeWindowViews::SetBackgroundColor(SkColor background_color) { // web views' background color. - SkColor background_color = ParseHexColor(color_name); SetBackground(views::CreateSolidBackground(background_color)); #if defined(OS_WIN) diff --git a/atom/browser/native_window_views.h b/atom/browser/native_window_views.h index 73e91a9227..1d6fad7d26 100644 --- a/atom/browser/native_window_views.h +++ b/atom/browser/native_window_views.h @@ -101,7 +101,7 @@ class NativeWindowViews : public NativeWindow, bool IsSimpleFullScreen() override; void SetKiosk(bool kiosk) override; bool IsKiosk() override; - void SetBackgroundColor(const std::string& color_name) override; + void SetBackgroundColor(SkColor color) override; void SetHasShadow(bool has_shadow) override; bool HasShadow() override; void SetOpacity(const double opacity) override;