From 5a1d521a1d4fc128e42ebc86b7236aeedeb8f09e Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 14:49:09 +0200 Subject: [PATCH] fix: fixed white flash on call to BrowserWindow.show (#48558) Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Cezary Kulakowski --- shell/browser/api/electron_api_base_window.h | 4 ++-- shell/browser/api/electron_api_browser_window.cc | 14 +++++++++++++- shell/browser/api/electron_api_browser_window.h | 2 ++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/shell/browser/api/electron_api_base_window.h b/shell/browser/api/electron_api_base_window.h index 3aff31d9054c..65c8528947e5 100644 --- a/shell/browser/api/electron_api_base_window.h +++ b/shell/browser/api/electron_api_base_window.h @@ -104,8 +104,8 @@ class BaseWindow : public gin_helper::TrackableObject, virtual void Focus(); virtual void Blur(); bool IsFocused() const; - void Show(); - void ShowInactive(); + virtual void Show(); + virtual void ShowInactive(); void Hide(); bool IsVisible() const; bool IsEnabled() const; diff --git a/shell/browser/api/electron_api_browser_window.cc b/shell/browser/api/electron_api_browser_window.cc index f4af58e8b1be..1de588396ba1 100644 --- a/shell/browser/api/electron_api_browser_window.cc +++ b/shell/browser/api/electron_api_browser_window.cc @@ -280,7 +280,6 @@ v8::Local BrowserWindow::GetWebContents(v8::Isolate* isolate) { } void BrowserWindow::OnWindowShow() { - web_contents()->WasShown(); BaseWindow::OnWindowShow(); } @@ -289,6 +288,19 @@ void BrowserWindow::OnWindowHide() { BaseWindow::OnWindowHide(); } +void BrowserWindow::Show() { + web_contents()->WasShown(); + BaseWindow::Show(); +} + +void BrowserWindow::ShowInactive() { + // This method doesn't make sense for modal window. + if (IsModal()) + return; + web_contents()->WasShown(); + BaseWindow::ShowInactive(); +} + // static gin_helper::WrappableBase* BrowserWindow::New(gin_helper::ErrorThrower thrower, gin::Arguments* args) { diff --git a/shell/browser/api/electron_api_browser_window.h b/shell/browser/api/electron_api_browser_window.h index b13ffda8f8a1..02684f23b5c5 100644 --- a/shell/browser/api/electron_api_browser_window.h +++ b/shell/browser/api/electron_api_browser_window.h @@ -67,6 +67,8 @@ class BrowserWindow : public BaseWindow, void SetBackgroundMaterial(const std::string& material) override; void OnWindowShow() override; void OnWindowHide() override; + void Show() override; + void ShowInactive() override; // BrowserWindow APIs. void FocusOnWebView();