On Windows, add option to customize window class name (#2978)

This commit is contained in:
Géraud-Loup 2023-07-29 15:39:23 +02:00 committed by GitHub
parent e33d2bee6c
commit 75173118b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 6 deletions

View file

@ -30,6 +30,7 @@ pub struct PlatformSpecificWindowBuilderAttributes {
pub no_redirection_bitmap: bool,
pub drag_and_drop: bool,
pub skip_taskbar: bool,
pub class_name: String,
pub decoration_shadow: bool,
}
@ -42,6 +43,7 @@ impl Default for PlatformSpecificWindowBuilderAttributes {
no_redirection_bitmap: false,
drag_and_drop: true,
skip_taskbar: false,
class_name: "Window Class".to_string(),
decoration_shadow: false,
}
}

View file

@ -1100,7 +1100,8 @@ where
{
let title = util::encode_wide(&attributes.title);
let class_name = register_window_class::<T>();
let class_name = util::encode_wide(&pl_attribs.class_name);
register_window_class::<T>(&class_name);
let mut window_flags = WindowFlags::empty();
window_flags.set(WindowFlags::MARKER_DECORATIONS, attributes.decorations);
@ -1187,9 +1188,7 @@ where
Ok(initdata.window.unwrap())
}
unsafe fn register_window_class<T: 'static>() -> Vec<u16> {
let class_name = util::encode_wide("Window Class");
unsafe fn register_window_class<T: 'static>(class_name: &[u16]) {
let class = WNDCLASSEXW {
cbSize: mem::size_of::<WNDCLASSEXW>() as u32,
style: CS_HREDRAW | CS_VREDRAW,
@ -1210,8 +1209,6 @@ unsafe fn register_window_class<T: 'static>() -> Vec<u16> {
// Also since there is no weird element in the struct, there is no reason for this
// call to fail.
RegisterClassExW(&class);
class_name
}
struct ComInitialized(*mut ());