fix: crash when calling BrowserWindow.moveTop()
on modal children (#39499)
fix: crash when calling moveTop() on modal children
This commit is contained in:
parent
f7a7085019
commit
1eb398b328
2 changed files with 15 additions and 3 deletions
|
@ -812,7 +812,7 @@ bool NativeWindowMac::MoveAbove(const std::string& sourceId) {
|
|||
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];
|
||||
|
@ -823,10 +823,11 @@ bool NativeWindowMac::MoveAbove(const std::string& sourceId) {
|
|||
}
|
||||
|
||||
void NativeWindowMac::MoveTop() {
|
||||
if (!parent())
|
||||
if (!parent() || is_modal()) {
|
||||
[window_ orderWindow:NSWindowAbove relativeTo:0];
|
||||
else
|
||||
} else {
|
||||
ReorderChildWindowAbove(window_, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::SetResizable(bool resizable) {
|
||||
|
|
|
@ -1283,6 +1283,8 @@ describe('BrowserWindow module', () => {
|
|||
});
|
||||
|
||||
describe('BrowserWindow.moveTop()', () => {
|
||||
afterEach(closeAllWindows);
|
||||
|
||||
it('should not steal focus', async () => {
|
||||
const posDelta = 50;
|
||||
const wShownInactive = once(w, 'show');
|
||||
|
@ -1324,6 +1326,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)', () => {
|
||||
|
|
Loading…
Reference in a new issue