Skip to content

Commit

Permalink
fix: BrowserWindow backgroundColor (#30819)
Browse files Browse the repository at this point in the history
Co-authored-by: samuelmaddock <samuel.maddock@gmail.com>
  • Loading branch information
trop[bot] and samuelmaddock committed Sep 3, 2021
1 parent 9799589 commit cffc1a2
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
4 changes: 1 addition & 3 deletions shell/browser/api/electron_api_browser_window.cc
Expand Up @@ -362,9 +362,7 @@ void BrowserWindow::Blur() {

void BrowserWindow::SetBackgroundColor(const std::string& color_name) {
BaseWindow::SetBackgroundColor(color_name);
auto* view = web_contents()->GetRenderWidgetHostView();
if (view)
view->SetBackgroundColor(ParseHexColor(color_name));
web_contents()->SetPageBaseBackgroundColor(ParseHexColor(color_name));
// Also update the web preferences object otherwise the view will be reset on
// the next load URL call
if (api_web_contents_) {
Expand Down
10 changes: 9 additions & 1 deletion shell/browser/api/electron_api_web_contents.cc
Expand Up @@ -1373,8 +1373,16 @@ void WebContents::HandleNewRenderFrame(
std::string color_name;
if (web_preferences->GetPreference(options::kBackgroundColor,
&color_name)) {
rwhv->SetBackgroundColor(ParseHexColor(color_name));
web_contents()->SetPageBaseBackgroundColor(ParseHexColor(color_name));
} else {
web_contents()->SetPageBaseBackgroundColor(absl::nullopt);
}

// When a page base background color is set, transparency needs to be
// explicitly set by calling
// RenderWidgetHostOwnerDelegate::SetBackgroundOpaque(false).
// RenderWidgetHostViewBase::SetBackgroundColor() will do this for us.
if (web_preferences->IsEnabled(options::kTransparent)) {
rwhv->SetBackgroundColor(SK_ColorTRANSPARENT);
}
}
Expand Down

0 comments on commit cffc1a2

Please sign in to comment.