Skip to content

Commit f118870

Browse files
committed
Stop setting window styles when minimizing (rust-windowing#985)
1 parent 2927006 commit f118870

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/platform_impl/windows/window_state.rs

+12-8
Original file line numberDiff line numberDiff line change
@@ -266,24 +266,25 @@ impl WindowFlags {
266266
}
267267
}
268268

269-
if diff.contains(WindowFlags::MINIMIZED) || new.contains(WindowFlags::MINIMIZED) {
269+
if diff.contains(WindowFlags::MAXIMIZED) || new.contains(WindowFlags::MAXIMIZED) {
270270
unsafe {
271271
winuser::ShowWindow(
272272
window,
273-
match new.contains(WindowFlags::MINIMIZED) {
274-
true => winuser::SW_MINIMIZE,
273+
match new.contains(WindowFlags::MAXIMIZED) {
274+
true => winuser::SW_MAXIMIZE,
275275
false => winuser::SW_RESTORE,
276276
},
277277
);
278278
}
279279
}
280280

281-
if diff.contains(WindowFlags::MAXIMIZED) || new.contains(WindowFlags::MAXIMIZED) {
281+
// Minimize operations should execute after maximize for proper window animations
282+
if diff.contains(WindowFlags::MINIMIZED) {
282283
unsafe {
283284
winuser::ShowWindow(
284285
window,
285-
match new.contains(WindowFlags::MAXIMIZED) {
286-
true => winuser::SW_MAXIMIZE,
286+
match new.contains(WindowFlags::MINIMIZED) {
287+
true => winuser::SW_MINIMIZE,
287288
false => winuser::SW_RESTORE,
288289
},
289290
);
@@ -296,8 +297,11 @@ impl WindowFlags {
296297
unsafe {
297298
winuser::SendMessageW(window, *event_loop::SET_RETAIN_STATE_ON_SIZE_MSG_ID, 1, 0);
298299

299-
winuser::SetWindowLongW(window, winuser::GWL_STYLE, style as _);
300-
winuser::SetWindowLongW(window, winuser::GWL_EXSTYLE, style_ex as _);
300+
// This condition is necessary to avoid having an unrestorable window
301+
if !new.contains(WindowFlags::MINIMIZED) {
302+
winuser::SetWindowLongW(window, winuser::GWL_STYLE, style as _);
303+
winuser::SetWindowLongW(window, winuser::GWL_EXSTYLE, style_ex as _);
304+
}
301305

302306
let mut flags = winuser::SWP_NOZORDER
303307
| winuser::SWP_NOMOVE

0 commit comments

Comments
 (0)