fix: apply transparency settings to WebContentsPreferences (#31685)
* fix: add transparency to web_contents_preferences * fix: correctly apply transparency settings to new webContents from webPreferences
This commit is contained in:
parent
190dd31dbc
commit
86f6285299
2 changed files with 10 additions and 2 deletions
|
@ -4059,9 +4059,11 @@ gin::Handle<WebContents> WebContents::CreateFromWebPreferences(
|
|||
absl::optional<SkColor> color =
|
||||
existing_preferences->GetBackgroundColor();
|
||||
web_contents->web_contents()->SetPageBaseBackgroundColor(color);
|
||||
// Because web preferences don't recognize transparency,
|
||||
// only set rwhv background color if a color exists
|
||||
auto* rwhv = web_contents->web_contents()->GetRenderWidgetHostView();
|
||||
if (rwhv)
|
||||
rwhv->SetBackgroundColor(color.value_or(SK_ColorWHITE));
|
||||
if (rwhv && color.has_value())
|
||||
rwhv->SetBackgroundColor(color.value());
|
||||
}
|
||||
} else {
|
||||
// Create one if not.
|
||||
|
|
|
@ -225,6 +225,12 @@ void WebContentsPreferences::SetFromDictionary(
|
|||
web_preferences.Get("disablePopups", &disable_popups_);
|
||||
web_preferences.Get("disableDialogs", &disable_dialogs_);
|
||||
web_preferences.Get("safeDialogs", &safe_dialogs_);
|
||||
// preferences don't save a transparency option,
|
||||
// apply any existing transparency setting to background_color_
|
||||
bool transparent;
|
||||
if (web_preferences.Get(options::kTransparent, &transparent)) {
|
||||
background_color_ = SK_ColorTRANSPARENT;
|
||||
}
|
||||
std::string background_color;
|
||||
if (web_preferences.GetHidden(options::kBackgroundColor, &background_color))
|
||||
background_color_ = ParseHexColor(background_color);
|
||||
|
|
Loading…
Reference in a new issue