From 667f0edcf4603de90ba68ca405cccadfced2c3a5 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Thu, 3 Dec 2015 15:15:32 -0500 Subject: [PATCH] Do not remove OSR transparency when switching monitors (issue #1775) --- libcef/browser/osr/render_widget_host_view_osr.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index fefae3771..f007ae0d9 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -614,8 +614,12 @@ gfx::Rect CefRenderWidgetHostViewOSR::GetViewBounds() const { } void CefRenderWidgetHostViewOSR::SetBackgroundColor(SkColor color) { + if (transparent_) + color = SkColorSetARGB(SK_AlphaTRANSPARENT, 0, 0, 0); + content::RenderWidgetHostViewBase::SetBackgroundColor(color); - bool opaque = GetBackgroundOpaque(); + + const bool opaque = !transparent_ && GetBackgroundOpaque(); if (render_widget_host_) render_widget_host_->SetBackgroundOpaque(opaque); } @@ -1070,7 +1074,7 @@ void CefRenderWidgetHostViewOSR::DelegatedFrameHostUpdateVSyncParameters( bool CefRenderWidgetHostViewOSR::InstallTransparency() { if (transparent_) { - SetBackgroundColor(SkColorSetARGB(SK_AlphaTRANSPARENT, 0, 0, 0)); + SetBackgroundColor(SkColor()); compositor_->SetHostHasTransparentBackground(true); return true; }