From 2af1550bbb7cd7f7d5b058ddd1d664c8ccb6c0b6 Mon Sep 17 00:00:00 2001 From: Kirill Chibisov Date: Mon, 27 Feb 2023 20:46:00 +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 a36f8f27..dd511a8a 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 3b411bac..ad546955 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)) }