diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index 9d5c8f8684d..3605f806aed 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -1489,13 +1489,20 @@ int WebContents::GetFrameRate() const { } void WebContents::Invalidate() { - if (!IsOffScreen()) - return; - - auto* osr_rwhv = static_cast( - web_contents()->GetRenderWidgetHostView()); - if (osr_rwhv) - osr_rwhv->Invalidate(); + if (IsOffScreen()) { + auto* osr_rwhv = static_cast( + web_contents()->GetRenderWidgetHostView()); + if (osr_rwhv) + osr_rwhv->Invalidate(); + } + else { + const auto ownerWindow = owner_window(); + const auto nativeWindow = ownerWindow ? ownerWindow->GetNativeWindow() : nullptr; + if (nativeWindow) { + const gfx::Rect& bounds = nativeWindow->bounds(); + nativeWindow->SchedulePaintInRect(gfx::Rect(0, 0, bounds.width(), bounds.height())); + } + } } v8::Local WebContents::GetWebPreferences(v8::Isolate* isolate) {