app: [iOS] fix focus event for iOS 13.0+ with backward compatibility

UIScene notifications are the correct way to track window focus on
iOS 13.0+, because the Key Window API is scene-level on iOS 13.0+,
but we need to maintain support for iOS 12 and earlier.

Implementation strategy:
- iOS 13.0+: Use UIScene notifications (DidActivate/WillDeactivate)
- iOS 12 and earlier: Keep existing UIWindow notifications as fallback
- Add runtime version checks to select the appropriate API

Key changes in os_ios.m:
- Add @available(iOS 13.0, *) checks
- Register both notification types with conditional logic
- Ensure proper cleanup of observers when moving between windows

See: https://developer.apple.com/documentation/uikit/uiscene?language=objc

Fixes: https://lists.sr.ht/~eliasnaur/gio/%3CCAMAFT9Uyh_JWrkQQt+AmekJWFBqhZPsP_3ZxC1fUNB+=VGGorw@mail.gmail.com%3E
Signed-off-by: CoyAce <akeycoy@gmail.com>
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
CoyAce
2026-03-10 16:42:09 +08:00
committed by Elias Naur
parent 92fa23b59b
commit 760369174d
2 changed files with 48 additions and 12 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ type Config struct {
Decorated bool
// TopMost windows render above all other non-top-most windows.
TopMost bool
// Focused reports whether has the keyboard focus.
// Focused reports whether the window is focused.
Focused bool
// decoHeight is the height of the fallback decoration for platforms such
// as Wayland that may need fallback client-side decorations.