From b74e49a972a62a1ec7a1aeab880d29a2d922fb4e Mon Sep 17 00:00:00 2001 From: phlpsong Date: Sun, 24 Mar 2024 10:33:58 +0800 Subject: [PATCH 1/3] fix: branches list order issue and truncate priority of name --- CodeEdit/Features/Git/SourceControlManager.swift | 12 ++++++++++++ .../Views/SourceControlNavigatorRepositoryItem.swift | 1 + ...rolNavigatorRepositoryView+outlineGroupData.swift | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CodeEdit/Features/Git/SourceControlManager.swift b/CodeEdit/Features/Git/SourceControlManager.swift index 56fff5e94..fe8d8757e 100644 --- a/CodeEdit/Features/Git/SourceControlManager.swift +++ b/CodeEdit/Features/Git/SourceControlManager.swift @@ -38,6 +38,18 @@ final class SourceControlManager: ObservableObject { @Published var isGitRepository: Bool = false + var orderedLocalBranches: [GitBranch] { + var orderedBranches: [GitBranch] = [] + if let currentBranch { + orderedBranches.append(currentBranch) + } + let othersBranch = branches + .filter { $0.isLocal && $0.name != currentBranch?.name } + .sorted { $0.name < $1.name } + orderedBranches.append(contentsOf: othersBranch) + return orderedBranches + } + init( workspaceURL: URL, editorManager: EditorManager diff --git a/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryItem.swift b/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryItem.swift index caf40bc23..e425a7054 100644 --- a/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryItem.swift +++ b/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryItem.swift @@ -24,6 +24,7 @@ struct SourceControlNavigatorRepositoryItem: View { .lineLimit(1) .foregroundStyle(.secondary) .font(.system(size: 11)) + .layoutPriority(-1) } Spacer() HStack(spacing: 5) { diff --git a/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryView+outlineGroupData.swift b/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryView+outlineGroupData.swift index 7b698c315..57f0438e8 100644 --- a/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryView+outlineGroupData.swift +++ b/CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository/Views/SourceControlNavigatorRepositoryView+outlineGroupData.swift @@ -15,7 +15,7 @@ extension SourceControlNavigatorRepositoryView { label: "Branches", systemImage: "externaldrive.fill", imageColor: Color(nsColor: .secondaryLabelColor), - children: sourceControlManager.branches.filter({ $0.isLocal }).map { branch in + children: sourceControlManager.orderedLocalBranches.map { branch in .init( id: "Branch\(branch.name)", label: branch.name, From 6c5c53932bab5f41c7ddda2bf4119f53a76ebf37 Mon Sep 17 00:00:00 2001 From: Phillip Song <103433299+phlpsong@users.noreply.github.com> Date: Mon, 25 Mar 2024 08:41:15 +0800 Subject: [PATCH 2/3] Update SourceControlManager.swift Co-authored-by: Tom Ludwig --- .../Features/Git/SourceControlManager.swift | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/CodeEdit/Features/Git/SourceControlManager.swift b/CodeEdit/Features/Git/SourceControlManager.swift index fe8d8757e..62fd45c6c 100644 --- a/CodeEdit/Features/Git/SourceControlManager.swift +++ b/CodeEdit/Features/Git/SourceControlManager.swift @@ -38,17 +38,13 @@ final class SourceControlManager: ObservableObject { @Published var isGitRepository: Bool = false - var orderedLocalBranches: [GitBranch] { - var orderedBranches: [GitBranch] = [] - if let currentBranch { - orderedBranches.append(currentBranch) - } - let othersBranch = branches - .filter { $0.isLocal && $0.name != currentBranch?.name } - .sorted { $0.name < $1.name } - orderedBranches.append(contentsOf: othersBranch) - return orderedBranches - } + var orderedLocalBranches: [GitBranch] { + var orderedBranches: [GitBranch] = [currentBranch].compactMap { $0 } + let otherBranches = branches.filter { $0.isLocal && $0 != currentBranch } + .sorted { $0.name < $1.name } + orderedBranches.append(contentsOf: otherBranches) + return orderedBranches +} init( workspaceURL: URL, From 07ce27826c7615fd77729b04a219510f2ec29b91 Mon Sep 17 00:00:00 2001 From: phlpsong Date: Mon, 25 Mar 2024 09:24:30 +0800 Subject: [PATCH 3/3] fix: optimize branch picker list issue and use lowercase to sort --- .../CodeEditUI/Views/ToolbarBranchPicker.swift | 6 +++--- CodeEdit/Features/Git/SourceControlManager.swift | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CodeEdit/Features/CodeEditUI/Views/ToolbarBranchPicker.swift b/CodeEdit/Features/CodeEditUI/Views/ToolbarBranchPicker.swift index af69745b0..6e17ba2b7 100644 --- a/CodeEdit/Features/CodeEditUI/Views/ToolbarBranchPicker.swift +++ b/CodeEdit/Features/CodeEditUI/Views/ToolbarBranchPicker.swift @@ -112,15 +112,15 @@ struct ToolbarBranchPicker: View { } } - let branches = sourceControlManager.branches - .filter({ $0.isLocal && $0 != sourceControlManager.currentBranch }) + let branches = sourceControlManager.orderedLocalBranches + .filter({ $0 != sourceControlManager.currentBranch }) let branchesGroups = branches.reduce(into: [String: GitBranchesGroup]()) { result, branch in guard let branchPrefix = branch.name.components(separatedBy: "/").first else { return } result[ - branchPrefix, + branchPrefix.lowercased(), default: GitBranchesGroup(name: branchPrefix, branches: []) ].branches.append(branch) } diff --git a/CodeEdit/Features/Git/SourceControlManager.swift b/CodeEdit/Features/Git/SourceControlManager.swift index 62fd45c6c..dc8da10e9 100644 --- a/CodeEdit/Features/Git/SourceControlManager.swift +++ b/CodeEdit/Features/Git/SourceControlManager.swift @@ -38,13 +38,13 @@ final class SourceControlManager: ObservableObject { @Published var isGitRepository: Bool = false - var orderedLocalBranches: [GitBranch] { - var orderedBranches: [GitBranch] = [currentBranch].compactMap { $0 } - let otherBranches = branches.filter { $0.isLocal && $0 != currentBranch } - .sorted { $0.name < $1.name } - orderedBranches.append(contentsOf: otherBranches) - return orderedBranches -} + var orderedLocalBranches: [GitBranch] { + var orderedBranches: [GitBranch] = [currentBranch].compactMap { $0 } + let otherBranches = branches.filter { $0.isLocal && $0 != currentBranch } + .sorted { $0.name.lowercased() < $1.name.lowercased() } + orderedBranches.append(contentsOf: otherBranches) + return orderedBranches + } init( workspaceURL: URL,