feat: allow setting roundedCorners on Windows (#45594)

* feat: allow setting roundedCorners on Windows

* Update docs/api/structures/base-window-options.md

Co-authored-by: Will Anderson <will@itsananderson.com>

---------

Co-authored-by: Will Anderson <will@itsananderson.com>
This commit is contained in:
Shelley Vohr 2025-02-20 21:39:12 +01:00 committed by GitHub
parent 5ea885c87f
commit 340fdaf511
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 3 deletions

View file

@ -97,9 +97,10 @@
* `height` Integer (optional) - The height of the title bar and Window Controls Overlay in pixels. Default is system height. * `height` Integer (optional) - The height of the title bar and Window Controls Overlay in pixels. Default is system height.
* `trafficLightPosition` [Point](point.md) (optional) _macOS_ - * `trafficLightPosition` [Point](point.md) (optional) _macOS_ -
Set a custom position for the traffic light buttons in frameless windows. Set a custom position for the traffic light buttons in frameless windows.
* `roundedCorners` boolean (optional) _macOS_ - Whether frameless window * `roundedCorners` boolean (optional) _macOS_ _Windows_ - Whether frameless window
should have rounded corners on macOS. Default is `true`. Setting this property should have rounded corners. Default is `true`. Setting this property
to `false` will prevent the window from being fullscreenable. to `false` will prevent the window from being fullscreenable on macOS.
On Windows versions older than Windows 11 Build 22000 this property has no effect, and frameless windows will not have rounded corners.
* `thickFrame` boolean (optional) - Use `WS_THICKFRAME` style for frameless windows on * `thickFrame` boolean (optional) - Use `WS_THICKFRAME` style for frameless windows on
Windows, which adds standard window frame. Setting it to `false` will remove Windows, which adds standard window frame. Setting it to `false` will remove
window shadow and window animations. Default is `true`. window shadow and window animations. Default is `true`.

View file

@ -378,6 +378,11 @@ NativeWindowViews::NativeWindowViews(const gin_helper::Dictionary& options,
if (!thick_frame_) if (!thick_frame_)
frame_style &= ~(WS_THICKFRAME | WS_CAPTION); frame_style &= ~(WS_THICKFRAME | WS_CAPTION);
::SetWindowLong(GetAcceleratedWidget(), GWL_STYLE, frame_style); ::SetWindowLong(GetAcceleratedWidget(), GWL_STYLE, frame_style);
bool rounded_corner = true;
options.Get(options::kRoundedCorners, &rounded_corner);
if (!rounded_corner)
SetRoundedCorners(false);
} }
LONG ex_style = ::GetWindowLong(GetAcceleratedWidget(), GWL_EXSTYLE); LONG ex_style = ::GetWindowLong(GetAcceleratedWidget(), GWL_EXSTYLE);