diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index d7d4a9bd827f5..0ba1637fe069a 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -594,6 +594,7 @@ void NativeWindowViews::Unmaximize() { #if defined(OS_WIN) if (transparent()) { SetBounds(restore_bounds_, false); + NotifyWindowUnmaximize(); return; } #endif diff --git a/shell/browser/native_window_views_win.cc b/shell/browser/native_window_views_win.cc index 05335aed07d66..cf4eb4855f4c2 100644 --- a/shell/browser/native_window_views_win.cc +++ b/shell/browser/native_window_views_win.cc @@ -187,6 +187,7 @@ void NativeWindowViews::Maximize() { auto display = display::Screen::GetScreen()->GetDisplayNearestWindow( GetNativeWindow()); SetBounds(display.work_area(), false); + NotifyWindowMaximize(); } } diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts index 30dced06784de..b1613fea6dce2 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -1119,7 +1119,7 @@ describe('BrowserWindow module', () => { await unmaximize; expectBoundsEqual(w.getNormalBounds(), bounds); }); - it('can check transparent window maximization', async () => { + it('correctly checks transparent window maximization state', async () => { w.destroy(); w = new BrowserWindow({ show: false, @@ -1128,12 +1128,12 @@ describe('BrowserWindow module', () => { transparent: true }); - const maximize = emittedOnce(w, 'resize'); + const maximize = emittedOnce(w, 'maximize'); w.show(); w.maximize(); await maximize; expect(w.isMaximized()).to.equal(true); - const unmaximize = emittedOnce(w, 'resize'); + const unmaximize = emittedOnce(w, 'unmaximize'); w.unmaximize(); await unmaximize; expect(w.isMaximized()).to.equal(false); @@ -3266,6 +3266,19 @@ describe('BrowserWindow module', () => { await maximize; }); + it('emits an event when a transparent window is maximized', async () => { + const w = new BrowserWindow({ + show: false, + frame: false, + transparent: true + }); + + const maximize = emittedOnce(w, 'maximize'); + w.show(); + w.maximize(); + await maximize; + }); + it('emits only one event when frameless window is maximized', () => { const w = new BrowserWindow({ show: false, frame: false }); let emitted = 0; @@ -3284,6 +3297,22 @@ describe('BrowserWindow module', () => { await unmaximize; }); + it('emits an event when a transparent window is unmaximized', async () => { + const w = new BrowserWindow({ + show: false, + frame: false, + transparent: true + }); + + const maximize = emittedOnce(w, 'maximize'); + const unmaximize = emittedOnce(w, 'unmaximize'); + w.show(); + w.maximize(); + await maximize; + w.unmaximize(); + await unmaximize; + }); + it('emits an event when window is minimized', async () => { const w = new BrowserWindow({ show: false }); const minimize = emittedOnce(w, 'minimize');