style(mac): adjust session row padding and menu options

main
Peter Steinberger 2025-12-22 23:30:25 +01:00
parent d265a04b19
commit 6205b955da
2 changed files with 25 additions and 21 deletions

View File

@ -273,10 +273,9 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate {
private func buildSyncingMenu(for row: SessionRow) -> NSMenu { private func buildSyncingMenu(for row: SessionRow) -> NSMenu {
let menu = NSMenu() let menu = NSMenu()
let options: [(title: String, value: String?)] = [ let options: [(title: String, value: String)] = [
("On", "on"), ("On", "on"),
("Off", "off"), ("Off", "off"),
("Default", nil),
] ]
for (title, value) in options { for (title, value) in options {
let item = NSMenuItem(title: title, action: #selector(self.patchSyncing(_:)), keyEquivalent: "") let item = NSMenuItem(title: title, action: #selector(self.patchSyncing(_:)), keyEquivalent: "")
@ -286,28 +285,33 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate {
"value": value as Any, "value": value as Any,
] ]
let isSelected: Bool = { let isSelected: Bool = {
switch value { if value == "on" { return row.syncing?.isOn == true }
case .none: return row.syncing?.isOff == true
return row.syncing == nil
case "on":
return row.syncing?.isOn == true
case "off":
return row.syncing?.isOff == true
default:
return false
}
}() }()
item.state = isSelected ? .on : .off item.state = isSelected ? .on : .off
menu.addItem(item) menu.addItem(item)
} }
if let syncing = row.syncing,
!syncing.isOn,
!syncing.isOff,
!syncing.label.isEmpty
{
menu.addItem(NSMenuItem.separator())
let current = NSMenuItem(title: "Sync \(syncing.label)", action: nil, keyEquivalent: "")
current.state = .on
current.isEnabled = false
menu.addItem(current)
}
return menu return menu
} }
private func buildThinkingMenu(for row: SessionRow) -> NSMenu { private func buildThinkingMenu(for row: SessionRow) -> NSMenu {
let menu = NSMenu() let menu = NSMenu()
let levels: [String?] = ["off", "minimal", "low", "medium", "high", nil] let levels: [String] = ["off", "minimal", "low", "medium", "high"]
for level in levels { for level in levels {
let title = (level ?? "default").capitalized let title = level.capitalized
let item = NSMenuItem(title: title, action: #selector(self.patchThinking(_:)), keyEquivalent: "") let item = NSMenuItem(title: title, action: #selector(self.patchThinking(_:)), keyEquivalent: "")
item.target = self item.target = self
item.representedObject = [ item.representedObject = [
@ -322,9 +326,9 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate {
private func buildVerboseMenu(for row: SessionRow) -> NSMenu { private func buildVerboseMenu(for row: SessionRow) -> NSMenu {
let menu = NSMenu() let menu = NSMenu()
let levels: [String?] = ["on", "off", nil] let levels: [String] = ["on", "off"]
for level in levels { for level in levels {
let title = (level ?? "default").capitalized let title = level.capitalized
let item = NSMenuItem(title: title, action: #selector(self.patchVerbose(_:)), keyEquivalent: "") let item = NSMenuItem(title: title, action: #selector(self.patchVerbose(_:)), keyEquivalent: "")
item.target = self item.target = self
item.representedObject = [ item.representedObject = [

View File

@ -15,9 +15,9 @@ struct SessionMenuLabelView: View {
let row: SessionRow let row: SessionRow
let width: CGFloat let width: CGFloat
@Environment(\.menuItemHighlighted) private var isHighlighted @Environment(\.menuItemHighlighted) private var isHighlighted
private let paddingLeading: CGFloat = 22 private let paddingLeading: CGFloat = 24
private let paddingTrailing: CGFloat = 14 private let paddingTrailing: CGFloat = 16
private let barHeight: CGFloat = 5 private let barHeight: CGFloat = 6
private var primaryTextColor: Color { private var primaryTextColor: Color {
self.isHighlighted ? Color(nsColor: .selectedMenuItemTextColor) : .primary self.isHighlighted ? Color(nsColor: .selectedMenuItemTextColor) : .primary
@ -28,7 +28,7 @@ struct SessionMenuLabelView: View {
} }
var body: some View { var body: some View {
VStack(alignment: .leading, spacing: 6) { VStack(alignment: .leading, spacing: 7) {
ContextUsageBar( ContextUsageBar(
usedTokens: row.tokens.total, usedTokens: row.tokens.total,
contextTokens: row.tokens.contextTokens, contextTokens: row.tokens.contextTokens,
@ -58,7 +58,7 @@ struct SessionMenuLabelView: View {
.padding(.leading, 2) .padding(.leading, 2)
} }
} }
.padding(.vertical, 6) .padding(.vertical, 8)
.padding(.leading, self.paddingLeading) .padding(.leading, self.paddingLeading)
.padding(.trailing, self.paddingTrailing) .padding(.trailing, self.paddingTrailing)
} }