fix: transparency on child windows being lost (#31003)

* fix: transparency on child windows being lost

* fix crash

* fix a different crash

* fix more crash
This commit is contained in:
Jeremy Rose 2021-09-20 17:20:54 -07:00 committed by GitHub
parent 6dd33b75b2
commit 82da4b0090
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 3 deletions

View file

@ -362,7 +362,11 @@ void BrowserWindow::Blur() {
void BrowserWindow::SetBackgroundColor(const std::string& color_name) {
BaseWindow::SetBackgroundColor(color_name);
web_contents()->SetPageBaseBackgroundColor(ParseHexColor(color_name));
SkColor color = ParseHexColor(color_name);
web_contents()->SetPageBaseBackgroundColor(color);
auto* rwhv = web_contents()->GetRenderWidgetHostView();
if (rwhv)
rwhv->SetBackgroundColor(color);
// Also update the web preferences object otherwise the view will be reset on
// the next load URL call
if (api_web_contents_) {

View file

@ -1373,8 +1373,9 @@ void WebContents::HandleNewRenderFrame(
// Set the background color of RenderWidgetHostView.
auto* web_preferences = WebContentsPreferences::From(web_contents());
if (web_preferences) {
web_contents()->SetPageBaseBackgroundColor(
web_preferences->GetBackgroundColor());
absl::optional<SkColor> color = web_preferences->GetBackgroundColor();
web_contents()->SetPageBaseBackgroundColor(color);
rwhv->SetBackgroundColor(color.value_or(SK_ColorWHITE));
}
if (!background_throttling_)
@ -3866,6 +3867,12 @@ gin::Handle<WebContents> WebContents::CreateFromWebPreferences(
if (gin::ConvertFromV8(isolate, web_preferences.GetHandle(),
&web_preferences_dict)) {
existing_preferences->SetFromDictionary(web_preferences_dict);
absl::optional<SkColor> color =
existing_preferences->GetBackgroundColor();
web_contents->web_contents()->SetPageBaseBackgroundColor(color);
auto* rwhv = web_contents->web_contents()->GetRenderWidgetHostView();
if (rwhv)
rwhv->SetBackgroundColor(color.value_or(SK_ColorWHITE));
}
} else {
// Create one if not.