From 42a1f80429c9d1e8a7adc54fad2b9de7533caa3d Mon Sep 17 00:00:00 2001 From: rhysd Date: Thu, 4 Jun 2026 21:58:07 +0900 Subject: [PATCH] winit-win32: Fix Window focus after showing hidden maximized window --- winit-win32/src/window_state.rs | 20 +++++++++++++------- winit/src/changelog/unreleased.md | 1 + 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/winit-win32/src/window_state.rs b/winit-win32/src/window_state.rs index ed06d76042..ec64cdb503 100644 --- a/winit-win32/src/window_state.rs +++ b/winit-win32/src/window_state.rs @@ -345,12 +345,15 @@ impl WindowFlags { } if new.contains(WindowFlags::VISIBLE) { - let flag = if !self.contains(WindowFlags::MARKER_ACTIVATE) { - self.set(WindowFlags::MARKER_ACTIVATE, true); - SW_SHOWNOACTIVATE - } else { - SW_SHOW - }; + let flag = + if new.contains(WindowFlags::MAXIMIZED) && diff.contains(WindowFlags::VISIBLE) { + SW_MAXIMIZE + } else if !self.contains(WindowFlags::MARKER_ACTIVATE) { + self.set(WindowFlags::MARKER_ACTIVATE, true); + SW_SHOWNOACTIVATE + } else { + SW_SHOW + }; unsafe { ShowWindow(window, flag); } @@ -379,7 +382,10 @@ impl WindowFlags { } } - if diff.contains(WindowFlags::MAXIMIZED) || new.contains(WindowFlags::MAXIMIZED) { + if (diff.contains(WindowFlags::MAXIMIZED) || new.contains(WindowFlags::MAXIMIZED)) + && new.contains(WindowFlags::VISIBLE) + && !diff.contains(WindowFlags::VISIBLE) + { unsafe { ShowWindow(window, match new.contains(WindowFlags::MAXIMIZED) { true => SW_MAXIMIZE, diff --git a/winit/src/changelog/unreleased.md b/winit/src/changelog/unreleased.md index 729bfd639b..f7d0af59ff 100644 --- a/winit/src/changelog/unreleased.md +++ b/winit/src/changelog/unreleased.md @@ -61,3 +61,4 @@ changelog entry. - On Wayland, switch from using the `ahash` hashing algorithm to `foldhash`. - On macOS, fix borderless game presentation options not sticking after switching spaces. - On macOS, fix IME being locked on (regardless of requests to disable) after being enabled once. +- On Windows, fix missing focus events after showing a hidden maximized window.