Skip to content

Commit 0ee36ee

Browse files
committed
Added NSWindow environment key
Signed-off-by: Wouter01 <wouterhennen@gmail.com>
1 parent ff0f796 commit 0ee36ee

File tree

11 files changed

+74
-48
lines changed

11 files changed

+74
-48
lines changed

CodeEdit.xcodeproj/project.pbxproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,8 @@
305305
6C05A8AF284D0CA3007F4EAA /* WorkspaceDocument+Listeners.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C05A8AE284D0CA3007F4EAA /* WorkspaceDocument+Listeners.swift */; };
306306
6C14CEB028777D3C001468FE /* FindNavigatorListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C14CEAF28777D3C001468FE /* FindNavigatorListViewController.swift */; };
307307
6C14CEB32877A68F001468FE /* FindNavigatorMatchListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C14CEB22877A68F001468FE /* FindNavigatorMatchListCell.swift */; };
308+
6C48D8F22972DAFC00D6D205 /* IsFullscreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C48D8F12972DAFC00D6D205 /* IsFullscreen.swift */; };
309+
6C48D8F42972DB1A00D6D205 /* Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C48D8F32972DB1A00D6D205 /* Window.swift */; };
308310
6CDA84AB284C0E4A00C1CC3A /* TabBarItemButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CDA84AA284C0E4A00C1CC3A /* TabBarItemButtonStyle.swift */; };
309311
6CDA84AD284C1BA000C1CC3A /* TabBarContextMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CDA84AC284C1BA000C1CC3A /* TabBarContextMenu.swift */; };
310312
B62617282964924E00E866AB /* CodeEditKit in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 2801BB89290D5A8E00EBF552 /* CodeEditKit */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -669,6 +671,8 @@
669671
6C05A8AE284D0CA3007F4EAA /* WorkspaceDocument+Listeners.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WorkspaceDocument+Listeners.swift"; sourceTree = "<group>"; };
670672
6C14CEAF28777D3C001468FE /* FindNavigatorListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindNavigatorListViewController.swift; sourceTree = "<group>"; };
671673
6C14CEB22877A68F001468FE /* FindNavigatorMatchListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindNavigatorMatchListCell.swift; sourceTree = "<group>"; };
674+
6C48D8F12972DAFC00D6D205 /* IsFullscreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsFullscreen.swift; sourceTree = "<group>"; };
675+
6C48D8F32972DB1A00D6D205 /* Window.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Window.swift; sourceTree = "<group>"; };
672676
6CDA84AA284C0E4A00C1CC3A /* TabBarItemButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarItemButtonStyle.swift; sourceTree = "<group>"; };
673677
6CDA84AC284C1BA000C1CC3A /* TabBarContextMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarContextMenu.swift; sourceTree = "<group>"; };
674678
B658FB2C27DA9E0F00EA4DBD /* CodeEdit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CodeEdit.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1777,6 +1781,7 @@
17771781
58D01C85293167DC00C5B6B4 /* Utils */ = {
17781782
isa = PBXGroup;
17791783
children = (
1784+
6C48D8EF2972DAC300D6D205 /* Environment */,
17801785
58D01C87293167DC00C5B6B4 /* Extensions */,
17811786
58D01C8F293167DC00C5B6B4 /* KeyChain */,
17821787
5831E3C92933E83400D5A6D2 /* Protocols */,
@@ -2112,6 +2117,15 @@
21122117
path = FindNavigatorResultList;
21132118
sourceTree = "<group>";
21142119
};
2120+
6C48D8EF2972DAC300D6D205 /* Environment */ = {
2121+
isa = PBXGroup;
2122+
children = (
2123+
6C48D8F12972DAFC00D6D205 /* IsFullscreen.swift */,
2124+
6C48D8F32972DB1A00D6D205 /* Window.swift */,
2125+
);
2126+
path = Environment;
2127+
sourceTree = "<group>";
2128+
};
21152129
B658FB2327DA9E0F00EA4DBD = {
21162130
isa = PBXGroup;
21172131
children = (
@@ -2591,6 +2605,7 @@
25912605
5882252D292C280D00E83CDE /* StatusBarSplitTerminalButton.swift in Sources */,
25922606
58798238292E30B90085B254 /* FeedbackWindowController.swift in Sources */,
25932607
587B9E6C29301D8F00AC7927 /* GitLabNamespace.swift in Sources */,
2608+
6C48D8F22972DAFC00D6D205 /* IsFullscreen.swift in Sources */,
25942609
587B9E8729301D8F00AC7927 /* GitHubRepositories.swift in Sources */,
25952610
587B9DA329300ABD00AC7927 /* SettingsTextEditor.swift in Sources */,
25962611
2072FA1A280D872600C7F8D4 /* LineEndings.swift in Sources */,
@@ -2684,6 +2699,7 @@
26842699
58F2EB09292FB2B0004A9BDE /* TerminalPreferences.swift in Sources */,
26852700
587D9B742933BF5700BF7490 /* FileItem+Array.swift in Sources */,
26862701
587D9B772933BF5700BF7490 /* Live.swift in Sources */,
2702+
6C48D8F42972DB1A00D6D205 /* Window.swift in Sources */,
26872703
2072FA18280D871200C7F8D4 /* TextEncoding.swift in Sources */,
26882704
58F2EAF3292FB2B0004A9BDE /* ThemePreviewIcon.swift in Sources */,
26892705
58F2EB07292FB2B0004A9BDE /* GeneralPreferences.swift in Sources */,

CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
6868
let feedbackPerformer = NSHapticFeedbackManager.defaultPerformer
6969
let splitVC = CodeEditSplitViewController(feedbackPerformer: feedbackPerformer)
7070

71-
let navigatorView = NavigatorSidebarView(workspace: workspace, windowController: self)
71+
let navigatorView = NavigatorSidebarView(workspace: workspace)
7272
let navigator = NSSplitViewItem(
7373
sidebarWithViewController: NSHostingController(rootView: navigatorView)
7474
)
@@ -77,14 +77,15 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate {
7777
navigator.collapseBehavior = .useConstraints
7878
splitVC.addSplitViewItem(navigator)
7979

80-
let workspaceView = WorkspaceView(windowController: self, workspace: workspace)
80+
let workspaceView = WorkspaceView(workspace: workspace)
81+
.environment(\.window, window!)
8182
let mainContent = NSSplitViewItem(
8283
viewController: NSHostingController(rootView: workspaceView)
8384
)
8485
mainContent.titlebarSeparatorStyle = .line
8586
splitVC.addSplitViewItem(mainContent)
8687

87-
let inspectorView = InspectorSidebarView(workspace: workspace, windowController: self)
88+
let inspectorView = InspectorSidebarView(workspace: workspace)
8889
let inspector = NSSplitViewItem(
8990
viewController: NSHostingController(rootView: inspectorView)
9091
)

CodeEdit/Features/Documents/Views/WorkspaceCodeFileView.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import SwiftUI
99
import UniformTypeIdentifiers
1010

1111
struct WorkspaceCodeFileView: View {
12-
var windowController: NSWindowController
13-
1412
@ObservedObject
1513
var workspace: WorkspaceDocument
1614

CodeEdit/Features/InspectorSidebar/InspectorSidebarView.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,11 @@ struct InspectorSidebarView: View {
1212
@ObservedObject
1313
private var workspace: WorkspaceDocument
1414

15-
private let windowController: NSWindowController
16-
1715
@State
1816
private var selection: Int = 0
1917

20-
init(workspace: WorkspaceDocument, windowController: NSWindowController) {
18+
init(workspace: WorkspaceDocument) {
2119
self.workspace = workspace
22-
self.windowController = windowController
2320
}
2421

2522
var body: some View {

CodeEdit/Features/NavigatorSidebar/NavigatorSidebarView.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,20 @@ struct NavigatorSidebarView: View {
1111
@ObservedObject
1212
private var workspace: WorkspaceDocument
1313

14-
private let windowController: NSWindowController
15-
1614
@State
1715
private var selection: Int = 0
1816

1917
private let toolbarPadding: Double = -8.0
2018

21-
init(workspace: WorkspaceDocument, windowController: NSWindowController) {
19+
init(workspace: WorkspaceDocument) {
2220
self.workspace = workspace
23-
self.windowController = windowController
2421
}
2522

2623
var body: some View {
2724
VStack {
2825
switch selection {
2926
case 0:
30-
ProjectNavigatorView(workspace: workspace, windowController: windowController)
27+
ProjectNavigatorView(workspace: workspace)
3128
case 1:
3229
SourceControlNavigatorView(workspace: workspace)
3330
case 2:

CodeEdit/Features/NavigatorSidebar/ProjectNavigator/ProjectNavigatorView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import SwiftUI
1616
///
1717
struct ProjectNavigatorView: View {
1818
@ObservedObject var workspace: WorkspaceDocument
19-
var windowController: NSWindowController
2019

2120
var body: some View {
2221
OutlineView(workspace: workspace)

CodeEdit/Features/TabBar/Views/TabBarItemView.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,6 @@ struct TabBarItemView: View {
7676
/// You can get tab-related information from here, like `label`, `icon`, etc.
7777
private var item: TabBarItemRepresentable
7878

79-
/// AppKit window controller.
80-
private var windowController: NSWindowController
81-
8279
private var isTemporary: Bool
8380

8481
/// Is the current tab the active tab.
@@ -121,14 +118,12 @@ struct TabBarItemView: View {
121118
init(
122119
expectedWidth: Binding<CGFloat>,
123120
item: TabBarItemRepresentable,
124-
windowController: NSWindowController,
125121
draggingTabId: Binding<TabBarItemID?>,
126122
onDragTabId: Binding<TabBarItemID?>,
127123
workspace: WorkspaceDocument
128124
) {
129125
self._expectedWidth = expectedWidth
130126
self.item = item
131-
self.windowController = windowController
132127
self._draggingTabId = draggingTabId
133128
self._onDragTabId = onDragTabId
134129
self.workspace = workspace

CodeEdit/Features/TabBar/Views/TabBarView.swift

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ struct TabBarView: View {
3131
@StateObject
3232
private var prefs: AppPreferencesModel = .shared
3333

34-
/// The controller of current NSWindow.
35-
private let windowController: NSWindowController
36-
3734
/// The tab id of current dragging tab.
3835
///
3936
/// It will be `nil` when there is no tab dragged currently.
@@ -117,9 +114,8 @@ struct TabBarView: View {
117114
@State
118115
private var onDragLastLocation: CGPoint?
119116

120-
// TabBar(windowController: windowController, workspace: workspace)
121-
init(windowController: NSWindowController, workspace: WorkspaceDocument) {
122-
self.windowController = windowController
117+
// TabBar(workspace: workspace)
118+
init(workspace: WorkspaceDocument) {
123119
self.workspace = workspace
124120
}
125121

@@ -302,7 +298,6 @@ struct TabBarView: View {
302298
TabBarItemView(
303299
expectedWidth: $expectedTabWidth,
304300
item: item,
305-
windowController: windowController,
306301
draggingTabId: $draggingTabId,
307302
onDragTabId: $onDragTabId,
308303
workspace: workspace
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// IsFullscreen.swift
3+
// CodeEdit
4+
//
5+
// Created by Wouter Hennen on 14/01/2023.
6+
//
7+
8+
import SwiftUI
9+
10+
private struct WorkspaceFullscreenStateEnvironmentKey: EnvironmentKey {
11+
static let defaultValue: Bool = false
12+
}
13+
14+
extension EnvironmentValues {
15+
var isFullscreen: Bool {
16+
get { self[WorkspaceFullscreenStateEnvironmentKey.self] }
17+
set { self[WorkspaceFullscreenStateEnvironmentKey.self] = newValue }
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// Window.swift
3+
// CodeEdit
4+
//
5+
// Created by Wouter Hennen on 14/01/2023.
6+
//
7+
8+
import SwiftUI
9+
10+
struct NSWindowEnvironmentKey: EnvironmentKey {
11+
static var defaultValue = NSWindow()
12+
}
13+
14+
extension EnvironmentValues {
15+
var window: NSWindowEnvironmentKey.Value {
16+
get { self[NSWindowEnvironmentKey.self] }
17+
set { self[NSWindowEnvironmentKey.self] = newValue }
18+
}
19+
}

0 commit comments

Comments
 (0)