From d5ed7f09da0846c05c9cbe4b498d81223084ece0 Mon Sep 17 00:00:00 2001 From: James Magahern Date: Thu, 16 Dec 2021 16:32:26 -0800 Subject: [PATCH] Settings: Actually make settings scene properly --- App/AppDelegate.swift | 8 +++++++- App/SceneDelegate.swift | 33 +++++++++++------------------- App/SettingsSceneDelegate.swift | 28 +++++++++++++++++++++++++ App/Supporting Files/Info.plist | 8 +++++++- SBrowser.xcodeproj/project.pbxproj | 4 ++++ 5 files changed, 58 insertions(+), 23 deletions(-) create mode 100644 App/SettingsSceneDelegate.swift diff --git a/App/AppDelegate.swift b/App/AppDelegate.swift index b0e452d..299ac42 100644 --- a/App/AppDelegate.swift +++ b/App/AppDelegate.swift @@ -19,7 +19,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { - return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + if let userActivity = options.userActivities.first { + if userActivity.activityType == SessionActivityType.SettingsWindow.rawValue { + return UISceneConfiguration(name: "Settings", sessionRole: connectingSceneSession.role) + } + } + + return UISceneConfiguration(name: "Browser", sessionRole: connectingSceneSession.role) } static func appMenuShortcuts() -> [UIKeyCommand] { diff --git a/App/SceneDelegate.swift b/App/SceneDelegate.swift index 939f66d..605d48e 100644 --- a/App/SceneDelegate.swift +++ b/App/SceneDelegate.swift @@ -23,29 +23,20 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let windowScene = (scene as? UIWindowScene) else { return } let window = UIWindow(windowScene: windowScene) - if let userActivity = connectionOptions.userActivities.first { - if userActivity.activityType == SessionActivityType.SettingsWindow.rawValue { - let settingsViewController = SettingsViewController(windowScene: windowScene) - self.settingsViewController = settingsViewController - window.rootViewController = settingsViewController - windowScene.sizeRestrictions?.maximumSize = CGSize(width: 760.0, height: 400.0) - } - } else { - let browserViewController = BrowserViewController() - self.browserViewController = browserViewController - window.rootViewController = browserViewController - - if let urlContext = connectionOptions.urlContexts.first { - let url = urlContext.url - browserViewController.tab.beginLoadingURL(url) - } - - #if targetEnvironment(macCatalyst) - windowScene.titlebar?.titleVisibility = .hidden - windowScene.titlebar?.separatorStyle = .none - #endif + let browserViewController = BrowserViewController() + self.browserViewController = browserViewController + window.rootViewController = browserViewController + + if let urlContext = connectionOptions.urlContexts.first { + let url = urlContext.url + browserViewController.tab.beginLoadingURL(url) } + #if targetEnvironment(macCatalyst) + windowScene.titlebar?.titleVisibility = .hidden + windowScene.titlebar?.separatorStyle = .none + #endif + window.makeKeyAndVisible() self.window = window } diff --git a/App/SettingsSceneDelegate.swift b/App/SettingsSceneDelegate.swift new file mode 100644 index 0000000..b2cf043 --- /dev/null +++ b/App/SettingsSceneDelegate.swift @@ -0,0 +1,28 @@ +// +// SettingsSceneDelegate.swift +// SBrowser +// +// Copyright © 2021 Apple Inc. All rights reserved. +// + +import UIKit + +class SettingsSceneDelegate: UIResponder, UIWindowSceneDelegate { + var window: UIWindow? + + var settingsViewController: SettingsViewController? + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) + { + guard let windowScene = (scene as? UIWindowScene) else { return } + + let window = UIWindow(windowScene: windowScene) + let settingsViewController = SettingsViewController(windowScene: windowScene) + self.settingsViewController = settingsViewController + window.rootViewController = settingsViewController + windowScene.sizeRestrictions?.maximumSize = CGSize(width: 760.0, height: 400.0) + + window.makeKeyAndVisible() + self.window = window + } +} diff --git a/App/Supporting Files/Info.plist b/App/Supporting Files/Info.plist index 72e44bd..aed86c0 100644 --- a/App/Supporting Files/Info.plist +++ b/App/Supporting Files/Info.plist @@ -50,8 +50,14 @@ UIWindowSceneSessionRoleApplication + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SettingsSceneDelegate UISceneConfigurationName - Default Configuration + Settings + + + UISceneConfigurationName + Browser UISceneDelegateClassName $(PRODUCT_MODULE_NAME).SceneDelegate diff --git a/SBrowser.xcodeproj/project.pbxproj b/SBrowser.xcodeproj/project.pbxproj index 9aa870b..92bf487 100644 --- a/SBrowser.xcodeproj/project.pbxproj +++ b/SBrowser.xcodeproj/project.pbxproj @@ -73,6 +73,7 @@ CDE6A30425F023BC00E912A4 /* AmberSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDE6A30325F023BC00E912A4 /* AmberSettingsViewController.swift */; }; CDE6A30625F023EA00E912A4 /* AmberSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDE6A30525F023EA00E912A4 /* AmberSettingsView.swift */; }; CDEDD8AA25D62ADB00862605 /* UITraitCollection+MacLike.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDEDD8A925D62ADB00862605 /* UITraitCollection+MacLike.swift */; }; + CDF3468E276C105900FB3141 /* SettingsSceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF3468D276C105900FB3141 /* SettingsSceneDelegate.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -175,6 +176,7 @@ CDE6A30325F023BC00E912A4 /* AmberSettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AmberSettingsViewController.swift; sourceTree = ""; }; CDE6A30525F023EA00E912A4 /* AmberSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AmberSettingsView.swift; sourceTree = ""; }; CDEDD8A925D62ADB00862605 /* UITraitCollection+MacLike.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITraitCollection+MacLike.swift"; sourceTree = ""; }; + CDF3468D276C105900FB3141 /* SettingsSceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSceneDelegate.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -276,6 +278,7 @@ children = ( 1ADFF45F24C7DE53006DC7AE /* AppDelegate.swift */, 1ADFF46124C7DE53006DC7AE /* SceneDelegate.swift */, + CDF3468D276C105900FB3141 /* SettingsSceneDelegate.swift */, CD7A89162519872D0075991E /* KeyboardShortcuts.swift */, CD7A89132519759D0075991E /* Autocomplete */, 1ADFF47A24C7E176006DC7AE /* Backend */, @@ -616,6 +619,7 @@ CD01D5AB254A206D00189CDC /* TabBarViewController.swift in Sources */, 1ADFF47924C7DFF8006DC7AE /* BrowserView.swift in Sources */, CDCE2664251AA80F007FE92A /* DocumentControlViewController.swift in Sources */, + CDF3468E276C105900FB3141 /* SettingsSceneDelegate.swift in Sources */, 1AB88EFF24D3BBA50006F850 /* TabPickerViewController.swift in Sources */, CD19576D268BE95900E8089B /* GenericContentView.swift in Sources */, 1A14FC2324D203D9009B3F83 /* TitlebarView.swift in Sources */,