diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index e5fd4045803a2..16a005cd35706 100644 --- a/docs/api/browser-window.md +++ b/docs/api/browser-window.md @@ -246,7 +246,8 @@ It creates a new `BrowserWindow` with native properties as set by the `options`. * `trafficLightPosition` [Point](structures/point.md) (optional) _macOS_ - Set a custom position for the traffic light buttons in frameless windows. * `roundedCorners` boolean (optional) _macOS_ - Whether frameless window - should have rounded corners on macOS. Default is `true`. + should have rounded corners on macOS. Default is `true`. Setting this property + to `false` will prevent the window from being fullscreenable. * `fullscreenWindowTitle` boolean (optional) _macOS_ _Deprecated_ - Shows the title in the title bar in full screen mode on macOS for `hiddenInset` titleBarStyle. Default is `false`. diff --git a/shell/browser/native_window_mac.mm b/shell/browser/native_window_mac.mm index c53daa26075ae..263e7a851121f 100644 --- a/shell/browser/native_window_mac.mm +++ b/shell/browser/native_window_mac.mm @@ -299,7 +299,7 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) { bool rounded_corner = true; options.Get(options::kRoundedCorners, &rounded_corner); if (!rounded_corner && !has_frame()) - styleMask = 0; + styleMask = NSWindowStyleMaskBorderless; if (minimizable) styleMask |= NSWindowStyleMaskMiniaturizable; @@ -695,6 +695,9 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) { } void NativeWindowMac::SetFullScreen(bool fullscreen) { + if (!has_frame() && !HasStyleMask(NSWindowStyleMaskTitled)) + return; + // [NSWindow -toggleFullScreen] is an asynchronous operation, which means // that it's possible to call it while a fullscreen transition is currently // in process. This can create weird behavior (incl. phantom windows), diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts index d23737fa43aeb..4d4b083be5624 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -1450,6 +1450,11 @@ describe('BrowserWindow module', () => { expect(w.fullScreen).to.be.true(); }); + it('does not go fullscreen if roundedCorners are enabled', async () => { + w = new BrowserWindow({ frame: false, roundedCorners: false, fullscreen: true }); + expect(w.fullScreen).to.be.false(); + }); + it('can be changed', () => { w.fullScreen = false; expect(w.fullScreen).to.be.false();