diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index 364da7e82458..f21ba2a8eeab 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -656,7 +656,7 @@ bool NativeWindowViews::IsMaximized() { return true; } else { #if BUILDFLAG(IS_WIN) - if (transparent()) { + if (transparent() && !IsMinimized()) { // Compare the size of the window with the size of the display auto display = display::Screen::GetScreen()->GetDisplayNearestWindow( GetNativeWindow()); diff --git a/spec/api-browser-window-spec.ts b/spec/api-browser-window-spec.ts index 0e558e0b0e2e..fc37f7296b84 100644 --- a/spec/api-browser-window-spec.ts +++ b/spec/api-browser-window-spec.ts @@ -6059,6 +6059,24 @@ describe('BrowserWindow module', () => { describe('"transparent" option', () => { afterEach(closeAllWindows); + ifit(process.platform !== 'linux')('correctly returns isMaximized() when the window is maximized then minimized', async () => { + const w = new BrowserWindow({ + frame: false, + transparent: true + }); + + const maximize = once(w, 'maximize'); + w.maximize(); + await maximize; + + const minimize = once(w, 'minimize'); + w.minimize(); + await minimize; + + expect(w.isMaximized()).to.be.false(); + expect(w.isMinimized()).to.be.true(); + }); + // Only applicable on Windows where transparent windows can't be maximized. ifit(process.platform === 'win32')('can show maximized frameless window', async () => { const display = screen.getPrimaryDisplay();