fix: Allow windows behind macOS elements if frame = false (#23976)

This commit is contained in:
Felix Rieseberg 2020-06-09 11:52:14 -07:00 committed by GitHub
parent 71e2b7151c
commit 3eade2c228
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View file

@ -91,8 +91,20 @@ bool ScopedDisableResize::disable_resize_ = false;
NSRect result = [super constrainFrameRect:frameRect toScreen:screen];
// Enable the window to be larger than screen.
if ([self enableLargerThanScreen])
result.size = frameRect.size;
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;
} else {
result = frameRect;
}
}
return result;
}

View file

@ -1673,6 +1673,13 @@ describe('BrowserWindow module', () => {
const after = w.getPosition();
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', () => {
const w = new BrowserWindow({ show: true, enableLargerThanScreen: false });
w.setPosition(-10, -10);