Files
letro-ios/ElementX/Sources/Application/Windowing/SceneDelegate.swift
Doug 6cfcd7d41f Fixes for multi-window support. (#5528)
* Correctly handle the re-opening of the main window.

Add an additional safe-guard to ensure only one main window exists.
Make sure all secondary windows use the correct tint colour.

* Fix a bug where the settings screen isn't shown on macOS when the AppLock feature is enabled.
2026-05-01 14:44:04 +01:00

32 lines
1.2 KiB
Swift

//
// Copyright 2025 Element Creations Ltd.
// Copyright 2023-2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import SwiftUI
/// A basic window scene delegate used to configure the `WindowManager`.
///
/// We don't support multiple scenes right now, so the implementation is pretty basic.
class SceneDelegate: NSObject, UIWindowSceneDelegate {
weak static var windowManager: SecureWindowManagerProtocol!
/// The app's main window scene identifier.
static let mainSceneID = "Main"
/// The user info key used by SwiftUI for a `WindowGroup`s `id` parameter.
static let sceneIDKey = "com.apple.SwiftUI.sceneID"
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = scene as? UIWindowScene else { return }
Self.windowManager.configure(withScene: windowScene, session: session)
}
func sceneDidDisconnect(_ scene: UIScene) {
guard let windowScene = scene as? UIWindowScene else { return }
Self.windowManager.handleSceneDisconnection(windowScene)
}
}