Hi,
I’m developing a macOS Finder Sync extension and noticed that NSMenuItem.separator() does not appear to render as a standard separator line when used inside the menu returned from FIFinderSyncController.
In a normal AppKit NSMenu, the separator renders as expected. However, when the same kind of menu is returned from the Finder Sync extension, the separator appears as a blank/full-height empty row rather than a thin dividing line.
Example:
override func menu(for menuKind: FIMenuKind) -> NSMenu {
let menu = NSMenu(title: "")
menu.addItem(NSMenuItem(
title: "First Action",
action: #selector(firstAction(_:)),
keyEquivalent: ""
))
menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(
title: "Second Action",
action: #selector(secondAction(_:)),
keyEquivalent: ""
))
return menu
}
Expected result:
The separator should render as a normal macOS menu separator line between the two menu items.
Actual result:
In Finder’s context menu, the separator is displayed as blank vertical space / an empty menu row.
I understand that Finder Sync menus are rendered by Finder and may not support every NSMenuItem feature. However, NSMenuItem.separator() is a very standard way to visually group menu commands, so I wanted to ask:
- Is this a known limitation of Finder Sync extension menus?
- Is there a supported way to display a real separator line in Finder Sync context menus?
- Should this be filed as a Feedback Assistant issue against Finder Sync / AppKit?
I’m trying to avoid fake separators such as disabled menu items with "────" as the title, since that does not feel native and may not behave well with different fonts, accessibility settings, or appearance modes.
Thanks!