Skip to content

Commit

Permalink
fix: crash when calling BrowserWindow.moveTop() on modal children (#…
Browse files Browse the repository at this point in the history
…39527)

fix: crash when calling moveTop() on modal children

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
  • Loading branch information
trop[bot] and codebytere committed Aug 16, 2023
1 parent ad76ef1 commit 9dea18c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
7 changes: 4 additions & 3 deletions shell/browser/native_window_mac.mm
Expand Up @@ -814,7 +814,7 @@ void ReorderChildWindowAbove(NSWindow* child_window, NSWindow* other_window) {
if (!webrtc::GetWindowOwnerPid(window_id))
return false;

if (!parent()) {
if (!parent() || is_modal()) {
[window_ orderWindow:NSWindowAbove relativeTo:window_id];
} else {
NSWindow* other_window = [NSApp windowWithWindowNumber:window_id];
Expand All @@ -825,10 +825,11 @@ void ReorderChildWindowAbove(NSWindow* child_window, NSWindow* other_window) {
}

void NativeWindowMac::MoveTop() {
if (!parent())
if (!parent() || is_modal()) {
[window_ orderWindow:NSWindowAbove relativeTo:0];
else
} else {
ReorderChildWindowAbove(window_, nullptr);
}
}

void NativeWindowMac::SetResizable(bool resizable) {
Expand Down
11 changes: 11 additions & 0 deletions spec/api-browser-window-spec.ts
Expand Up @@ -1284,6 +1284,8 @@ describe('BrowserWindow module', () => {
});

describe('BrowserWindow.moveTop()', () => {
afterEach(closeAllWindows);

it('should not steal focus', async () => {
const posDelta = 50;
const wShownInactive = once(w, 'show');
Expand Down Expand Up @@ -1325,6 +1327,15 @@ describe('BrowserWindow module', () => {
await closeWindow(otherWindow, { assertNotWindows: false });
expect(BrowserWindow.getAllWindows()).to.have.lengthOf(1);
});

it('should not crash when called on a modal child window', async () => {
const shown = once(w, 'show');
w.show();
await shown;

const child = new BrowserWindow({ modal: true, parent: w });
expect(() => { child.moveTop(); }).to.not.throw();
});
});

describe('BrowserWindow.moveAbove(mediaSourceId)', () => {
Expand Down

0 comments on commit 9dea18c

Please sign in to comment.