From e21259ba3f3f08663a22ccd5e486dbda0ad0c526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Zahola?= Date: Thu, 30 Nov 2023 12:43:22 +0100 Subject: [PATCH] fix: add missing `set_wants_to_be_visible(true)` to `NativeWindowMac::ShowInactive()` (#40546) * fix: add missing set_wants_to_be_visible(true) to NativeWindowMac::ShowInactive() * add test --- shell/browser/native_window_mac.mm | 2 ++ spec/api-browser-window-spec.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/shell/browser/native_window_mac.mm b/shell/browser/native_window_mac.mm index 0e8785f805ef8..cddd87cecbf59 100644 --- a/shell/browser/native_window_mac.mm +++ b/shell/browser/native_window_mac.mm @@ -534,6 +534,8 @@ void ReorderChildWindowAbove(NSWindow* child_window, NSWindow* other_window) { } void NativeWindowMac::ShowInactive() { + set_wants_to_be_visible(true); + // Reattach the window to the parent to actually show it. if (parent()) InternalSetParentWindow(parent(), true); diff --git a/spec/api-browser-window-spec.ts b/spec/api-browser-window-spec.ts index 2ee8c229d8517..050e05c3ea1e6 100644 --- a/spec/api-browser-window-spec.ts +++ b/spec/api-browser-window-spec.ts @@ -1144,6 +1144,34 @@ describe('BrowserWindow module', () => { await shown; expect(w.isMaximized()).to.equal(true); }); + + ifit(process.platform === 'darwin')('should attach child window to parent', async () => { + const wShow = once(w, 'show'); + w.show(); + await wShow; + + const c = new BrowserWindow({ show: false, parent: w }); + const cShow = once(c, 'show'); + c.showInactive(); + await cShow; + + // verifying by checking that the child tracks the parent's visibility + const minimized = once(w, 'minimize'); + w.minimize(); + await minimized; + + expect(w.isVisible()).to.be.false('parent is visible'); + expect(c.isVisible()).to.be.false('child is visible'); + + const restored = once(w, 'restore'); + w.restore(); + await restored; + + expect(w.isVisible()).to.be.true('parent is visible'); + expect(c.isVisible()).to.be.true('child is visible'); + + closeWindow(c); + }); }); describe('BrowserWindow.focus()', () => {