Skip to content

Commit d3b4a8e

Browse files
committed
Implement WorkspaceBackAndForthCommand
1 parent fbd06c5 commit d3b4a8e

File tree

6 files changed

+23
-13
lines changed

6 files changed

+23
-13
lines changed

AeroSpace.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
0A9DAD847B5340FBE3D9CF88 /* FlattenWorkspaceTreeCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C5B6719EF0BC14D7CF868C /* FlattenWorkspaceTreeCommand.swift */; };
1414
115F5CA4BEB80B645E66D198 /* NSScreenEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF3BB3DD434C75536217CB88 /* NSScreenEx.swift */; };
1515
1311398A83B998908773C54D /* FocusCommandTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EAADE8D2FB5D05FA5456B0 /* FocusCommandTest.swift */; };
16-
18C28195ACBE96C8CAC5D45E /* WorkspaceBackAndForth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F0624BD31CE77758353BA61 /* WorkspaceBackAndForth.swift */; };
1716
1C46EBB55D401C0D1AFD50F0 /* CollectionEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51CE37C1B8D858C81A396F40 /* CollectionEx.swift */; };
1817
1CB4082BE5C95CA8CD52BED9 /* Maybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345148B22F8A8F85109229AE /* Maybe.swift */; };
1918
1D408CDF1A489E527327EB15 /* CompositeCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = D82CD9670B7A6050073E0F76 /* CompositeCommand.swift */; };
@@ -45,6 +44,7 @@
4544
A2CBF9674964F9083BB198D2 /* ArrayEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 883D7F7F87FBE7D0BDE4E87F /* ArrayEx.swift */; };
4645
A55F31B0CC357B37108B8F54 /* MoveContainerToWorkspaceCommandTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DBD002C4A68AED07BB63EFA /* MoveContainerToWorkspaceCommandTest.swift */; };
4746
A5BFF75CF8021A585BC1F9D5 /* parseCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB03A4736BC3F6D19E4E69F3 /* parseCommand.swift */; };
47+
AC47DF43EFF42358F033C87C /* WorkspaceBackAndForthCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = EED7EE20910D7BE4D0150CED /* WorkspaceBackAndForthCommand.swift */; };
4848
AE76A183D0454E4C8ADCE380 /* SequenceEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAE5DCAEC5EE619CE33859E7 /* SequenceEx.swift */; };
4949
B0D0C37BAE7E7F0D0FF1E9FC /* GlobalObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C2E5977331398421A4FC168 /* GlobalObserver.swift */; };
5050
B1E527CF4941A4E9B8D9C3D0 /* MoveThroughCommandTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A247B616D1951777C565D02 /* MoveThroughCommandTest.swift */; };
@@ -85,7 +85,6 @@
8585
1E81623E8954701269A22322 /* AeroSpaceApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AeroSpaceApp.swift; sourceTree = "<group>"; };
8686
2431BEAFFF1AC12D3001317A /* TestApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestApp.swift; sourceTree = "<group>"; };
8787
28B788A95DD3C267878E05B5 /* Rect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Rect.swift; sourceTree = "<group>"; };
88-
2F0624BD31CE77758353BA61 /* WorkspaceBackAndForth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkspaceBackAndForth.swift; sourceTree = "<group>"; };
8988
345148B22F8A8F85109229AE /* Maybe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Maybe.swift; sourceTree = "<group>"; };
9089
3A262B442A94C1964509B691 /* TreeNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TreeNode.swift; sourceTree = "<group>"; };
9190
3A6EF465EF4129BCB10FE247 /* ExecCommandTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExecCommandTest.swift; sourceTree = "<group>"; };
@@ -134,6 +133,7 @@
134133
D82CD9670B7A6050073E0F76 /* CompositeCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompositeCommand.swift; sourceTree = "<group>"; };
135134
E761155C73F06E2CF5E292A4 /* FocusCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocusCommand.swift; sourceTree = "<group>"; };
136135
EC2F56249A233EC9806D0F08 /* Bridged-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bridged-Header.h"; sourceTree = "<group>"; };
136+
EED7EE20910D7BE4D0150CED /* WorkspaceBackAndForthCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkspaceBackAndForthCommand.swift; sourceTree = "<group>"; };
137137
EEDBFFCA7A77D96B18FB0732 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
138138
F3C5B6719EF0BC14D7CF868C /* FlattenWorkspaceTreeCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlattenWorkspaceTreeCommand.swift; sourceTree = "<group>"; };
139139
F6507EBAA795220FD0C05384 /* Monitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Monitor.swift; sourceTree = "<group>"; };
@@ -263,7 +263,7 @@
263263
67B9FFF81EB0327ABD51A7FE /* MoveThroughCommand.swift */,
264264
CB03A4736BC3F6D19E4E69F3 /* parseCommand.swift */,
265265
CF3C9038C846369FDD71D1D2 /* ReloadConfigCommand.swift */,
266-
2F0624BD31CE77758353BA61 /* WorkspaceBackAndForth.swift */,
266+
EED7EE20910D7BE4D0150CED /* WorkspaceBackAndForthCommand.swift */,
267267
43DD32B1711B8EFCC834B68E /* WorkspaceCommand.swift */,
268268
);
269269
path = command;
@@ -444,7 +444,7 @@
444444
03D8ABD4597EDB00D79807E1 /* TreeNodeEx.swift in Sources */,
445445
2CC46A952773F148AC398144 /* Window.swift in Sources */,
446446
BF16873111EEDE60A8AACD6B /* Workspace.swift in Sources */,
447-
18C28195ACBE96C8CAC5D45E /* WorkspaceBackAndForth.swift in Sources */,
447+
AC47DF43EFF42358F033C87C /* WorkspaceBackAndForthCommand.swift in Sources */,
448448
29AC28A25E1A66C608EBD7ED /* WorkspaceCommand.swift in Sources */,
449449
42197B9C71A0CDDE65804A6A /* accessibility.swift in Sources */,
450450
9A138A729245BD2723148583 /* focused.swift in Sources */,

src/TrayMenuModel.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,12 @@ class TrayMenuModel: ObservableObject {
55

66
@Published var focusedWorkspaceTrayText: String = currentEmptyWorkspace.name // config.first?.name ?? "W: 1"
77
}
8+
9+
func updateFocusedWorkspaceTrayText(newWorkspace: String) {
10+
if TrayMenuModel.shared.focusedWorkspaceTrayText != newWorkspace {
11+
previousWorkspaceName = TrayMenuModel.shared.focusedWorkspaceTrayText
12+
}
13+
TrayMenuModel.shared.focusedWorkspaceTrayText = newWorkspace
14+
}
15+
16+
var previousWorkspaceName: String? = nil

src/command/WorkspaceBackAndForth.swift

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
struct WorkspaceBackAndForthCommand: Command {
2+
func runWithoutRefresh() {
3+
precondition(Thread.current.isMainThread)
4+
guard let previousWorkspaceName else { return }
5+
WorkspaceCommand(workspaceName: previousWorkspaceName).runWithoutRefresh()
6+
}
7+
}

src/command/parseCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ private func parseSingleCommand(_ raw: String, _ backtrace: TomlBacktrace) -> Co
4343
return LayoutCommand(toggleBetween: args.map { parseLayout(String($0), backtrace) })
4444
?? errorT("\(backtrace): Can't create layout command") // todo nicer message
4545
} else if raw == "workspace_back_and_forth" {
46-
return WorkspaceBackAndForth()
46+
return WorkspaceBackAndForthCommand()
4747
} else if raw == "reload_config" {
4848
return ReloadConfigCommand()
4949
} else if raw == "flatten_workspace_tree" {

src/refresh.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ private func refreshWorkspaces() {
4242
focusedWorkspace = focusedWindow.workspace
4343
}
4444
focusedWorkspace.assignedMonitorOfNotEmptyWorkspace.setActiveWorkspace(focusedWorkspace)
45-
TrayMenuModel.shared.focusedWorkspaceTrayText = focusedWorkspace.name
45+
updateFocusedWorkspaceTrayText(newWorkspace: focusedWorkspace.name)
4646
} else {
4747
debug("refreshWorkspaces: empty")
48-
TrayMenuModel.shared.focusedWorkspaceTrayText = currentEmptyWorkspace.name
48+
updateFocusedWorkspaceTrayText(newWorkspace: currentEmptyWorkspace.name)
4949
}
5050
}
5151

0 commit comments

Comments
 (0)