diff --git a/Packages/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceNavigationRow.swift b/Packages/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceNavigationRow.swift index 5e41af77083..9ff1a020bb6 100644 --- a/Packages/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceNavigationRow.swift +++ b/Packages/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceNavigationRow.swift @@ -29,13 +29,7 @@ struct WorkspaceNavigationRow: View { @State private var isConfirmingClose = false var body: some View { - WorkspaceRow( - workspace: workspace, - connectionStatus: connectionStatus, - isSelected: navigationStyle == .sidebar && isSelected, - wrapWorkspaceTitles: wrapWorkspaceTitles, - previewLineLimit: previewLineLimit - ) + rowContent .onTapGesture { selectWorkspace(workspace.id) } @@ -89,6 +83,30 @@ struct WorkspaceNavigationRow: View { } } + private var rowContent: some View { + HStack(alignment: .center, spacing: 8) { + WorkspaceRow( + workspace: workspace, + connectionStatus: connectionStatus, + isSelected: navigationStyle == .sidebar && isSelected, + wrapWorkspaceTitles: wrapWorkspaceTitles, + previewLineLimit: previewLineLimit + ) + .layoutPriority(1) + + // NavigationLink(value:) restores the system disclosure row, but in + // this List it prevents swipe/context delete confirmation from + // presenting reliably. Keep the manual tap path and draw the + // compact-stack affordance explicitly. + if navigationStyle == .push { + Image(systemName: "chevron.forward") + .font(.footnote.weight(.semibold)) + .foregroundStyle(.tertiary) + .accessibilityHidden(true) + } + } + } + @ViewBuilder private var contextMenu: some View { if let setPinned {