Skip to content

Commit aeb32c7

Browse files
authored
Merge pull request #962 from Wouter01/main
Added NSWindow environment key
2 parents ff0f796 + e9ffd6a commit aeb32c7

File tree

12 files changed

+124
-95
lines changed

12 files changed

+124
-95
lines changed

CodeEdit.xcodeproj/project.pbxproj

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,9 @@
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 */; };
310+
6C48D8F72972E5F300D6D205 /* WindowObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C48D8F62972E5F300D6D205 /* WindowObserver.swift */; };
308311
6CDA84AB284C0E4A00C1CC3A /* TabBarItemButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CDA84AA284C0E4A00C1CC3A /* TabBarItemButtonStyle.swift */; };
309312
6CDA84AD284C1BA000C1CC3A /* TabBarContextMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CDA84AC284C1BA000C1CC3A /* TabBarContextMenu.swift */; };
310313
B62617282964924E00E866AB /* CodeEditKit in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 2801BB89290D5A8E00EBF552 /* CodeEditKit */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -669,6 +672,9 @@
669672
6C05A8AE284D0CA3007F4EAA /* WorkspaceDocument+Listeners.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WorkspaceDocument+Listeners.swift"; sourceTree = "<group>"; };
670673
6C14CEAF28777D3C001468FE /* FindNavigatorListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindNavigatorListViewController.swift; sourceTree = "<group>"; };
671674
6C14CEB22877A68F001468FE /* FindNavigatorMatchListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindNavigatorMatchListCell.swift; sourceTree = "<group>"; };
675+
6C48D8F12972DAFC00D6D205 /* IsFullscreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsFullscreen.swift; sourceTree = "<group>"; };
676+
6C48D8F32972DB1A00D6D205 /* Window.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Window.swift; sourceTree = "<group>"; };
677+
6C48D8F62972E5F300D6D205 /* WindowObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowObserver.swift; sourceTree = "<group>"; };
672678
6CDA84AA284C0E4A00C1CC3A /* TabBarItemButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarItemButtonStyle.swift; sourceTree = "<group>"; };
673679
6CDA84AC284C1BA000C1CC3A /* TabBarContextMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarContextMenu.swift; sourceTree = "<group>"; };
674680
B658FB2C27DA9E0F00EA4DBD /* CodeEdit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CodeEdit.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1777,6 +1783,7 @@
17771783
58D01C85293167DC00C5B6B4 /* Utils */ = {
17781784
isa = PBXGroup;
17791785
children = (
1786+
6C48D8EF2972DAC300D6D205 /* Environment */,
17801787
58D01C87293167DC00C5B6B4 /* Extensions */,
17811788
58D01C8F293167DC00C5B6B4 /* KeyChain */,
17821789
5831E3C92933E83400D5A6D2 /* Protocols */,
@@ -2112,6 +2119,15 @@
21122119
path = FindNavigatorResultList;
21132120
sourceTree = "<group>";
21142121
};
2122+
6C48D8EF2972DAC300D6D205 /* Environment */ = {
2123+
isa = PBXGroup;
2124+
children = (
2125+
6C48D8F12972DAFC00D6D205 /* IsFullscreen.swift */,
2126+
6C48D8F32972DB1A00D6D205 /* Window.swift */,
2127+
);
2128+
path = Environment;
2129+
sourceTree = "<group>";
2130+
};
21152131
B658FB2327DA9E0F00EA4DBD = {
21162132
isa = PBXGroup;
21172133
children = (
@@ -2151,6 +2167,7 @@
21512167
04660F6027E3A68A00477777 /* Info.plist */,
21522168
043C321927E32295006AE443 /* MainMenu.xib */,
21532169
B658FB3127DA9E0F00EA4DBD /* WorkspaceView.swift */,
2170+
6C48D8F62972E5F300D6D205 /* WindowObserver.swift */,
21542171
28069DA527F5BD320016BC47 /* DefaultThemes */,
21552172
);
21562173
path = CodeEdit;
@@ -2532,6 +2549,7 @@
25322549
D7012EE827E757850001E1EF /* FindNavigatorView.swift in Sources */,
25332550
58A5DF8029325B5A00D1BD5D /* GitClient.swift in Sources */,
25342551
D7E201AE27E8B3C000CB86D0 /* String+Ranges.swift in Sources */,
2552+
6C48D8F72972E5F300D6D205 /* WindowObserver.swift in Sources */,
25352553
587B9E6B29301D8F00AC7927 /* GitLabAvatarURL.swift in Sources */,
25362554
58798262292EC4080085B254 /* PluginRelease.swift in Sources */,
25372555
58F2EB10292FB2B0004A9BDE /* PreferencesColorPicker.swift in Sources */,
@@ -2591,6 +2609,7 @@
25912609
5882252D292C280D00E83CDE /* StatusBarSplitTerminalButton.swift in Sources */,
25922610
58798238292E30B90085B254 /* FeedbackWindowController.swift in Sources */,
25932611
587B9E6C29301D8F00AC7927 /* GitLabNamespace.swift in Sources */,
2612+
6C48D8F22972DAFC00D6D205 /* IsFullscreen.swift in Sources */,
25942613
587B9E8729301D8F00AC7927 /* GitHubRepositories.swift in Sources */,
25952614
587B9DA329300ABD00AC7927 /* SettingsTextEditor.swift in Sources */,
25962615
2072FA1A280D872600C7F8D4 /* LineEndings.swift in Sources */,
@@ -2684,6 +2703,7 @@
26842703
58F2EB09292FB2B0004A9BDE /* TerminalPreferences.swift in Sources */,
26852704
587D9B742933BF5700BF7490 /* FileItem+Array.swift in Sources */,
26862705
587D9B772933BF5700BF7490 /* Live.swift in Sources */,
2706+
6C48D8F42972DB1A00D6D205 /* Window.swift in Sources */,
26872707
2072FA18280D871200C7F8D4 /* TextEncoding.swift in Sources */,
26882708
58F2EAF3292FB2B0004A9BDE /* ThemePreviewIcon.swift in Sources */,
26892709
58F2EB07292FB2B0004A9BDE /* GeneralPreferences.swift in Sources */,

CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift

Lines changed: 6 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,17 @@ 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 = WindowObserver(window: window!) {
81+
WorkspaceView(workspace: workspace)
82+
}
83+
8184
let mainContent = NSSplitViewItem(
8285
viewController: NSHostingController(rootView: workspaceView)
8386
)
8487
mainContent.titlebarSeparatorStyle = .line
8588
splitVC.addSplitViewItem(mainContent)
8689

87-
let inspectorView = InspectorSidebarView(workspace: workspace, windowController: self)
90+
let inspectorView = InspectorSidebarView(workspace: workspace)
8891
let inspector = NSSplitViewItem(
8992
viewController: NSHostingController(rootView: inspectorView)
9093
)

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)