keep the Upgrade only… submenu visible, grey out the empty kind
It only appeared when both formulae and casks were outdated; with a single kind it vanished entirely. Now it shows whenever anything is outdated, with the empty kind greyed out (autoenablesItems is off — AppKit would otherwise re-enable the items from the responder chain on every menu open). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
390e7e526b
commit
778671e751
|
|
@ -86,6 +86,9 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
menu.addItem(upgradeAllItem)
|
menu.addItem(upgradeAllItem)
|
||||||
upgradeOnlyItem = NSMenuItem(title: "🎯 Upgrade only…", action: nil, keyEquivalent: "")
|
upgradeOnlyItem = NSMenuItem(title: "🎯 Upgrade only…", action: nil, keyEquivalent: "")
|
||||||
let upgradeOnlySubmenu = NSMenu()
|
let upgradeOnlySubmenu = NSMenu()
|
||||||
|
// manual isEnabled control below; otherwise AppKit re-enables the
|
||||||
|
// items from the responder chain every time the menu opens
|
||||||
|
upgradeOnlySubmenu.autoenablesItems = false
|
||||||
upgradeFormulaeItem = NSMenuItem(title: "Formulae", action: #selector(upgradeFormulaeOnly), keyEquivalent: "")
|
upgradeFormulaeItem = NSMenuItem(title: "Formulae", action: #selector(upgradeFormulaeOnly), keyEquivalent: "")
|
||||||
upgradeCasksItem = NSMenuItem(title: "Casks", action: #selector(upgradeCasksOnly), keyEquivalent: "")
|
upgradeCasksItem = NSMenuItem(title: "Casks", action: #selector(upgradeCasksOnly), keyEquivalent: "")
|
||||||
upgradeOnlySubmenu.addItem(upgradeFormulaeItem)
|
upgradeOnlySubmenu.addItem(upgradeFormulaeItem)
|
||||||
|
|
@ -570,11 +573,13 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
outdatedSubmenu.removeAllItems()
|
outdatedSubmenu.removeAllItems()
|
||||||
outdatedItem.isHidden = outdated.isEmpty
|
outdatedItem.isHidden = outdated.isEmpty
|
||||||
upgradeAllItem.isHidden = outdated.isEmpty
|
upgradeAllItem.isHidden = outdated.isEmpty
|
||||||
// "only" is meaningful only when both kinds are outdated; with a
|
// visible whenever anything is outdated; a kind with nothing to
|
||||||
// single kind, the main item already upgrades exactly what there is
|
// upgrade stays listed but greyed out
|
||||||
upgradeOnlyItem.isHidden = outdated.formulae.isEmpty || outdated.casks.isEmpty
|
upgradeOnlyItem.isHidden = outdated.isEmpty
|
||||||
upgradeFormulaeItem.title = "Formulae (\(outdated.formulae.count))"
|
upgradeFormulaeItem.title = outdated.formulae.isEmpty ? "Formulae" : "Formulae (\(outdated.formulae.count))"
|
||||||
upgradeCasksItem.title = "Casks (\(outdated.casks.count))"
|
upgradeFormulaeItem.isEnabled = !outdated.formulae.isEmpty
|
||||||
|
upgradeCasksItem.title = outdated.casks.isEmpty ? "Casks" : "Casks (\(outdated.casks.count))"
|
||||||
|
upgradeCasksItem.isEnabled = !outdated.casks.isEmpty
|
||||||
|
|
||||||
for package in outdated.all {
|
for package in outdated.all {
|
||||||
let item = NSMenuItem(title: package.label, action: #selector(upgradeSingle(_:)), keyEquivalent: "")
|
let item = NSMenuItem(title: package.label, action: #selector(upgradeSingle(_:)), keyEquivalent: "")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue