From a09c62b5d3d8dbc7b44c771169c15f5f26761ede Mon Sep 17 00:00:00 2001 From: Kirill Chibisov Date: Fri, 24 Feb 2023 12:20:37 +0300 Subject: [PATCH] On macOS, fix initial focused state The synthetic focused event was queued after the real event was send leading to focused issues on startup. Fixes #2695. --- CHANGELOG.md | 1 + src/platform_impl/macos/window.rs | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a36f8f2777..dd511a8aab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ And please only add new entries to the top of this list, right below the `# Unre - On Wayland, fix rare crash on DPI change - Web: Added support for `Window::theme`. - On Wayland, fix rounding issues when doing resize. +- On macOS, fix wrong focused state on startup. # 0.28.1 diff --git a/src/platform_impl/macos/window.rs b/src/platform_impl/macos/window.rs index 3b411baca4..ad54695567 100644 --- a/src/platform_impl/macos/window.rs +++ b/src/platform_impl/macos/window.rs @@ -466,6 +466,10 @@ impl WinitWindow { let delegate = WinitWindowDelegate::new(&this, attrs.fullscreen.is_some()); + // XXX Send `Focused(false)` right after creating the window delegate, so we won't + // obscure the real focused events on the startup. + delegate.queue_event(WindowEvent::Focused(false)); + // Set fullscreen mode after we setup everything this.set_fullscreen(attrs.fullscreen.map(Into::into)); @@ -485,8 +489,6 @@ impl WinitWindow { this.set_maximized(attrs.maximized); } - delegate.queue_event(WindowEvent::Focused(false)); - Ok((this, delegate)) }