diff --git a/CodeEdit.xcodeproj/project.pbxproj b/CodeEdit.xcodeproj/project.pbxproj index 60d4236ceb..9f39cfaf3e 100644 --- a/CodeEdit.xcodeproj/project.pbxproj +++ b/CodeEdit.xcodeproj/project.pbxproj @@ -300,6 +300,7 @@ 6CD03B6A29FC773F001BD1D0 /* SettingsInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CD03B6929FC773F001BD1D0 /* SettingsInjector.swift */; }; 6CDA84AD284C1BA000C1CC3A /* TabBarContextMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CDA84AC284C1BA000C1CC3A /* TabBarContextMenu.swift */; }; 6CDEFC9629E22C2700B7C684 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 6CDEFC9529E22C2700B7C684 /* Introspect */; }; + 6CE60BDD2A226A870075D21E /* Scene+Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CE60BDC2A226A870075D21E /* Scene+Environment.swift */; }; 6CFF967429BEBCC300182D6F /* FindCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFF967329BEBCC300182D6F /* FindCommands.swift */; }; 6CFF967629BEBCD900182D6F /* FileCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFF967529BEBCD900182D6F /* FileCommands.swift */; }; 6CFF967829BEBCF600182D6F /* MainCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFF967729BEBCF600182D6F /* MainCommands.swift */; }; @@ -706,6 +707,7 @@ 6CC9E4B129B5669900C97388 /* Environment+ActiveTabGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Environment+ActiveTabGroup.swift"; sourceTree = ""; }; 6CD03B6929FC773F001BD1D0 /* SettingsInjector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsInjector.swift; sourceTree = ""; }; 6CDA84AC284C1BA000C1CC3A /* TabBarContextMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarContextMenu.swift; sourceTree = ""; }; + 6CE60BDC2A226A870075D21E /* Scene+Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Scene+Environment.swift"; sourceTree = ""; }; 6CFF967329BEBCC300182D6F /* FindCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindCommands.swift; sourceTree = ""; }; 6CFF967529BEBCD900182D6F /* FileCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileCommands.swift; sourceTree = ""; }; 6CFF967729BEBCF600182D6F /* MainCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainCommands.swift; sourceTree = ""; }; @@ -2128,6 +2130,7 @@ B658FB3327DA9E1000EA4DBD /* Assets.xcassets */, B658FB3827DA9E1000EA4DBD /* CodeEdit.entitlements */, B66A4E4B29C9179B004573B4 /* CodeEditApp.swift */, + 6CE60BDC2A226A870075D21E /* Scene+Environment.swift */, 04660F6027E3A68A00477777 /* Info.plist */, B66A4E5529C918A0004573B4 /* SceneID.swift */, B658FB3127DA9E0F00EA4DBD /* WorkspaceView.swift */, @@ -2779,6 +2782,7 @@ 587B9E7E29301D8F00AC7927 /* GitHubGistRouter.swift in Sources */, 6CAAF69229BCC71C00A1F48A /* (null) in Sources */, 581BFB682926431000D251EC /* WelcomeView.swift in Sources */, + 6CE60BDD2A226A870075D21E /* Scene+Environment.swift in Sources */, 6CFF967829BEBCF600182D6F /* MainCommands.swift in Sources */, 587B9E7129301D8F00AC7927 /* GitURLSession.swift in Sources */, 5882252C292C280D00E83CDE /* StatusBarDrawer.swift in Sources */, diff --git a/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index d935c5f7d8..5ff815dd8b 100644 --- a/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -77,8 +77,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/lukepistrol/SwiftLintPlugin", "state" : { - "revision" : "f3586ed424d7bf5d94628332fbd0edebf1f5147f", - "version" : "0.2.3" + "revision" : "d3ec7fb242ebe1d8e23bf17e58a1e27d43125994", + "version" : "0.2.6" } }, { @@ -104,8 +104,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/siteline/SwiftUI-Introspect", "state" : { - "revision" : "c18951c747ab62af7c15e17a81bd37d4fd5a9979", - "version" : "0.2.3" + "revision" : "5b3f3996c7a2a84d5f4ba0e03cd7d584154778f2", + "version" : "0.3.1" } }, { diff --git a/CodeEdit/CodeEditApp.swift b/CodeEdit/CodeEditApp.swift index 8b0b8ea8b1..82ffa2bf2e 100644 --- a/CodeEdit/CodeEditApp.swift +++ b/CodeEdit/CodeEditApp.swift @@ -10,6 +10,7 @@ import SwiftUI @main struct CodeEditApp: App { @NSApplicationDelegateAdaptor var appdelegate: AppDelegate + @ObservedObject var settings = Settings.shared let updater: SoftwareUpdater = SoftwareUpdater() init() { @@ -19,13 +20,17 @@ struct CodeEditApp: App { } var body: some Scene { - WelcomeWindow() + Group { + WelcomeWindow() + .keyboardShortcut("1", modifiers: [.command, .shift]) - AboutWindow() + AboutWindow() - SettingsWindow() - .commands { - CodeEditCommands() + SettingsWindow() + .commands { + CodeEditCommands() + } } + .environment(\.settings, settings.preferences) // Add settings to each window environment } } diff --git a/CodeEdit/Features/Settings/SettingsView.swift b/CodeEdit/Features/Settings/SettingsView.swift index f0bf7631c8..1591d20e9b 100644 --- a/CodeEdit/Features/Settings/SettingsView.swift +++ b/CodeEdit/Features/Settings/SettingsView.swift @@ -99,7 +99,6 @@ struct SettingsView: View { } } .environmentObject(model) - .environment(\.settings, settings.preferences) } } diff --git a/CodeEdit/Features/Welcome/Views/WelcomeWindow.swift b/CodeEdit/Features/Welcome/Views/WelcomeWindow.swift index 29c2fd9d1e..a5e4d58f80 100644 --- a/CodeEdit/Features/Welcome/Views/WelcomeWindow.swift +++ b/CodeEdit/Features/Welcome/Views/WelcomeWindow.swift @@ -23,7 +23,6 @@ struct WelcomeWindow: Scene { window.isMovableByWindowBackground = true } } - .environment(\.settings, settings.preferences) } .windowStyle(.hiddenTitleBar) .keyboardShortcut("1", modifiers: [.command, .shift]) diff --git a/CodeEdit/Scene+Environment.swift b/CodeEdit/Scene+Environment.swift new file mode 100644 index 0000000000..eeb21fb804 --- /dev/null +++ b/CodeEdit/Scene+Environment.swift @@ -0,0 +1,20 @@ +// +// Scene+Environment.swift +// CodeEdit +// +// Created by Wouter Hennen on 27/05/2023. +// + +import SwiftUI + +extension SwiftUI.Scene { + @inlinable + func modifier(_ modifier: T) -> ModifiedContent { + return .init(content: self, modifier: modifier) + } + + @inlinable + func environment(_ keyPath: WritableKeyPath, _ value: V) -> some Scene { + modifier(_EnvironmentKeyWritingModifier(keyPath: keyPath, value: value)) + } +}