Catalystでprimary paneのツールバーにアイテムを表示する


NSToolbarDelegateで、WWDC20で追加されたばかりの新規APIを利用します。

以下のようにprimarySidebarTrackingSeparatorItemIdentifierを配置してください。そうすると、システムがそこをprimaryとsupplementary(もしくはsecondary)の境界線だと認識するので、適切にアイテムを配置してくれます。

この時、上記のidentifierに対してtoolbar(_:itemForItemIdentifier:willBeInsertedIntoToolbar:)では追加の記述は必要ありません。

extension ToolbarDelegate: NSToolbarDelegate {

    func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
        let identifiers: [NSToolbarItem.Identifier] = [
            .flexibleSpace,
            .itemPlacedInPrimary,
            .primarySidebarTrackingSeparatorItemIdentifier,
            .toggleSidebar,
            .flexibleSpace
        ]
        return identifiers
    }

    func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
        return toolbarDefaultItemIdentifiers(toolbar)
    }