Skip to content

Commit 436cb77

Browse files
committed
display(macOS): fix crash due to incorrect usage of submenu
Fixes #7408
1 parent a0978bd commit 436cb77

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

Platform/macOS/Display/VMDisplayWindowController.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -491,8 +491,7 @@ extension VMDisplayWindowController: NSToolbarItemValidation {
491491

492492
// MARK: - Stop menu
493493
extension VMDisplayWindowController {
494-
private func setupStopButtonMenu() {
495-
let menu = NSMenu()
494+
private func updateStopButtonMenu(_ menu: NSMenu) {
496495
menu.autoenablesItems = false
497496
let item1 = NSMenuItem()
498497
item1.title = NSLocalizedString("Request power down", comment: "VMDisplayWindowController")
@@ -514,6 +513,11 @@ extension VMDisplayWindowController {
514513
item3.action = #selector(forceKill)
515514
menu.addItem(item3)
516515
}
516+
}
517+
518+
private func setupStopButtonMenu() {
519+
let menu = NSMenu()
520+
updateStopButtonMenu(menu)
517521
stopToolbarItem.menu = menu
518522
if #unavailable(macOS 12), let view = stopToolbarItem.value(forKey: "_control") as? NSView {
519523
// BUG in macOS 11 results in the button not working without this
@@ -552,7 +556,9 @@ extension VMDisplayWindowController {
552556
menu.autoenablesItems = false
553557
stopMenuItem = NSMenuItem()
554558
stopMenuItem.title = NSLocalizedString("Power", comment: "VMDisplayWindowController")
555-
stopMenuItem.submenu = stopToolbarItem.menu
559+
let stopMenu = NSMenu()
560+
updateStopButtonMenu(stopMenu)
561+
stopMenuItem.submenu = stopMenu
556562
menu.addItem(stopMenuItem)
557563
startPauseMenuItem = NSMenuItem(title: "", action: #selector(startPauseButtonPressed), keyEquivalent: "")
558564
menu.addItem(startPauseMenuItem)

0 commit comments

Comments
 (0)