fix(windows): remove WS_CAPTION and WS_EX_WINDOWEDGE for child windows (#864)

* fix(windows): remove `WS_CAPTION` and `WS_EX_WINDOWEDGE` for child windows

* remove when decorations disabled only

* actually remove
This commit is contained in:
Amr Bashir
2024-01-25 04:40:13 +02:00
committed by GitHub
parent 585f05b2e7
commit ae4b693dc0
2 changed files with 13 additions and 3 deletions

5
.changes/child-styles.md Normal file
View File

@@ -0,0 +1,5 @@
---
"tao": "patch"
---
On Windows, Remove `WS_CAPTION` and `WS_EX_WINDOWEDGE` window styles when creating a child window.

View File

@@ -231,9 +231,8 @@ impl WindowFlags {
pub fn to_window_styles(self) -> (WINDOW_STYLE, WINDOW_EX_STYLE) {
let (mut style, mut style_ex) = (Default::default(), Default::default());
style |= WS_CLIPSIBLINGS | WS_SYSMENU | WS_CAPTION;
style_ex |= WS_EX_ACCEPTFILES | WS_EX_WINDOWEDGE;
style |= WS_CAPTION | WS_CLIPSIBLINGS | WS_SYSMENU;
style_ex |= WS_EX_WINDOWEDGE | WS_EX_ACCEPTFILES;
if self.contains(WindowFlags::RESIZABLE) {
style |= WS_SIZEBOX;
}
@@ -257,6 +256,12 @@ impl WindowFlags {
}
if self.contains(WindowFlags::CHILD) {
style |= WS_CHILD; // This is incompatible with WS_POPUP if that gets added eventually.
// Remove decorations window styles for child
if !self.contains(WindowFlags::MARKER_DECORATIONS) {
style &= !WS_CAPTION;
style_ex &= !WS_EX_WINDOWEDGE;
}
}
if self.contains(WindowFlags::POPUP) {
style |= WS_POPUP;