diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index 639667dad4356..12bc33fca5240 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -595,6 +595,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 a08b41f64d8ac..15bfb6ddbb868 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -1118,7 +1118,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, @@ -1127,12 +1127,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); @@ -3241,6 +3241,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; @@ -3259,6 +3272,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');