fix: Allow windows behind macOS elements if frame = false (#23976)
This commit is contained in:
parent
71e2b7151c
commit
3eade2c228
2 changed files with 21 additions and 2 deletions
|
@ -91,8 +91,20 @@ bool ScopedDisableResize::disable_resize_ = false;
|
||||||
|
|
||||||
NSRect result = [super constrainFrameRect:frameRect toScreen:screen];
|
NSRect result = [super constrainFrameRect:frameRect toScreen:screen];
|
||||||
// Enable the window to be larger than screen.
|
// Enable the window to be larger than screen.
|
||||||
if ([self enableLargerThanScreen])
|
if ([self enableLargerThanScreen]) {
|
||||||
|
// If we have a frame, ensure that we only position the window
|
||||||
|
// somewhere where the user can move or resize it (and not
|
||||||
|
// behind the menu bar, for instance)
|
||||||
|
//
|
||||||
|
// If there's no frame, put the window wherever the developer
|
||||||
|
// wanted it to go
|
||||||
|
if (shell_->has_frame()) {
|
||||||
result.size = frameRect.size;
|
result.size = frameRect.size;
|
||||||
|
} else {
|
||||||
|
result = frameRect;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1673,6 +1673,13 @@ describe('BrowserWindow module', () => {
|
||||||
const after = w.getPosition();
|
const after = w.getPosition();
|
||||||
expect(after[1]).to.be.at.least(0);
|
expect(after[1]).to.be.at.least(0);
|
||||||
});
|
});
|
||||||
|
it('can move the window behind menu bar if it has no frame', () => {
|
||||||
|
const w = new BrowserWindow({ show: true, enableLargerThanScreen: true, frame: false });
|
||||||
|
w.setPosition(-10, -10);
|
||||||
|
const after = w.getPosition();
|
||||||
|
expect(after[0]).to.be.equal(-10);
|
||||||
|
expect(after[1]).to.be.equal(-10);
|
||||||
|
});
|
||||||
it('without it, cannot move the window out of screen', () => {
|
it('without it, cannot move the window out of screen', () => {
|
||||||
const w = new BrowserWindow({ show: true, enableLargerThanScreen: false });
|
const w = new BrowserWindow({ show: true, enableLargerThanScreen: false });
|
||||||
w.setPosition(-10, -10);
|
w.setPosition(-10, -10);
|
||||||
|
|
Loading…
Reference in a new issue