Add option to enable/disable WS_CLIPCHILDREN window style (#3212)
This commit is contained in:
parent
0cc19716f3
commit
10a785019c
5 changed files with 22 additions and 1 deletions
|
|
@ -37,6 +37,7 @@ pub struct PlatformSpecificWindowBuilderAttributes {
|
|||
pub skip_taskbar: bool,
|
||||
pub class_name: String,
|
||||
pub decoration_shadow: bool,
|
||||
pub clip_children: bool,
|
||||
pub border_color: Option<Color>,
|
||||
pub title_background_color: Option<Color>,
|
||||
pub title_text_color: Option<Color>,
|
||||
|
|
@ -54,6 +55,7 @@ impl Default for PlatformSpecificWindowBuilderAttributes {
|
|||
skip_taskbar: false,
|
||||
class_name: "Window Class".to_string(),
|
||||
decoration_shadow: false,
|
||||
clip_children: true,
|
||||
border_color: None,
|
||||
title_background_color: None,
|
||||
title_text_color: None,
|
||||
|
|
|
|||
|
|
@ -1356,6 +1356,10 @@ unsafe fn init(
|
|||
// Will be changed later using `window.set_enabled_buttons` but we need to set a default here
|
||||
// so the diffing later can work.
|
||||
window_flags.set(WindowFlags::CLOSABLE, true);
|
||||
window_flags.set(
|
||||
WindowFlags::CLIP_CHILDREN,
|
||||
attributes.platform_specific.clip_children,
|
||||
);
|
||||
|
||||
let mut fallback_parent = || match attributes.platform_specific.owner {
|
||||
Some(parent) => {
|
||||
|
|
|
|||
|
|
@ -124,6 +124,8 @@ bitflags! {
|
|||
|
||||
const MARKER_ACTIVATE = 1 << 21;
|
||||
|
||||
const CLIP_CHILDREN = 1 << 22;
|
||||
|
||||
const EXCLUSIVE_FULLSCREEN_OR_MASK = WindowFlags::ALWAYS_ON_TOP.bits();
|
||||
}
|
||||
}
|
||||
|
|
@ -253,7 +255,7 @@ impl WindowFlags {
|
|||
|
||||
pub fn to_window_styles(self) -> (WINDOW_STYLE, WINDOW_EX_STYLE) {
|
||||
// Required styles to properly support common window functionality like aero snap.
|
||||
let mut style = WS_CAPTION | WS_BORDER | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU;
|
||||
let mut style = WS_CAPTION | WS_BORDER | WS_CLIPSIBLINGS | WS_SYSMENU;
|
||||
let mut style_ex = WS_EX_WINDOWEDGE | WS_EX_ACCEPTFILES;
|
||||
|
||||
if self.contains(WindowFlags::RESIZABLE) {
|
||||
|
|
@ -298,6 +300,9 @@ impl WindowFlags {
|
|||
if self.contains(WindowFlags::IGNORE_CURSOR_EVENT) {
|
||||
style_ex |= WS_EX_TRANSPARENT | WS_EX_LAYERED;
|
||||
}
|
||||
if self.contains(WindowFlags::CLIP_CHILDREN) {
|
||||
style |= WS_CLIPCHILDREN;
|
||||
}
|
||||
|
||||
if self.intersects(
|
||||
WindowFlags::MARKER_EXCLUSIVE_FULLSCREEN | WindowFlags::MARKER_BORDERLESS_FULLSCREEN,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue