mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-23 22:01:31 +11:00
Fix hiding a maximized window On Windows (#2336)
This commit is contained in:
parent
1cd0e94c26
commit
08d025968e
|
@ -8,6 +8,7 @@ And please only add new entries to the top of this list, right below the `# Unre
|
|||
|
||||
# Unreleased
|
||||
|
||||
- On Windows, fix hiding a maximized window.
|
||||
- On Android, `ndk-glue`'s `NativeWindow` lock is now held between `Event::Resumed` and `Event::Suspended`.
|
||||
- On Web, added `EventLoopExtWebSys` with a `spawn` method to start the event loop without throwing an exception.
|
||||
- Added `WindowEvent::Occluded(bool)`, currently implemented on macOS and X11.
|
||||
|
|
|
@ -106,7 +106,6 @@ bitflags! {
|
|||
|
||||
const EXCLUSIVE_FULLSCREEN_OR_MASK = WindowFlags::ALWAYS_ON_TOP.bits;
|
||||
const NO_DECORATIONS_AND_MASK = !WindowFlags::RESIZABLE.bits;
|
||||
const INVISIBLE_AND_MASK = !WindowFlags::MAXIMIZED.bits;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -229,9 +228,6 @@ impl WindowFlags {
|
|||
if self.contains(WindowFlags::MARKER_EXCLUSIVE_FULLSCREEN) {
|
||||
self |= WindowFlags::EXCLUSIVE_FULLSCREEN_OR_MASK;
|
||||
}
|
||||
if !self.contains(WindowFlags::VISIBLE) {
|
||||
self &= WindowFlags::INVISIBLE_AND_MASK;
|
||||
}
|
||||
if !self.contains(WindowFlags::DECORATIONS) {
|
||||
self &= WindowFlags::NO_DECORATIONS_AND_MASK;
|
||||
}
|
||||
|
@ -294,21 +290,17 @@ impl WindowFlags {
|
|||
new = new.mask();
|
||||
|
||||
let diff = self ^ new;
|
||||
|
||||
if diff == WindowFlags::empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
if diff.contains(WindowFlags::VISIBLE) {
|
||||
if new.contains(WindowFlags::VISIBLE) {
|
||||
unsafe {
|
||||
ShowWindow(
|
||||
window,
|
||||
match new.contains(WindowFlags::VISIBLE) {
|
||||
true => SW_SHOW,
|
||||
false => SW_HIDE,
|
||||
},
|
||||
);
|
||||
ShowWindow(window, SW_SHOW);
|
||||
}
|
||||
}
|
||||
|
||||
if diff.contains(WindowFlags::ALWAYS_ON_TOP) {
|
||||
unsafe {
|
||||
SetWindowPos(
|
||||
|
@ -352,6 +344,12 @@ impl WindowFlags {
|
|||
}
|
||||
}
|
||||
|
||||
if !new.contains(WindowFlags::VISIBLE) {
|
||||
unsafe {
|
||||
ShowWindow(window, SW_HIDE);
|
||||
}
|
||||
}
|
||||
|
||||
if diff != WindowFlags::empty() {
|
||||
let (style, style_ex) = new.to_window_styles();
|
||||
|
||||
|
|
Loading…
Reference in a new issue