Для справки, лучшая документация по внутренней работе меню Open Recent , которую я нашел, такова:
http://lapcatsoftware.com/blog/2007/07/10/working-without-a-nib-part-5-open-recent-menu/
К сожалению, это не очень помогает в этом, потому что даже если вы создадите такое меню, оно будет игнорироваться NSDocumentController
. Меню должно существовать в главном меню до вызова applicationDidFinishLaunching:
, иначе оно не будет выбрано - и, следовательно, дублирующиеся тоже игнорируются.
То, что я закончил, и то, что пока работает, это:
Первой идеей было выбрать соответствующий NSMenu
из главного меню и присоединить его к другим меню, надеясь, что подсчет ссылок сделает эту работу. Нет такой удачи, setSubmenu
бросает, если подменю уже находится в другом NSMenuItem
.
Поэтому вместо этого я «переопределяю» подменю - когда мне нужно показать его в другом меню, я удаляю его из главного меню Открыть недавние и устанавливаю его как подменю в новом меню. Позже я перенесу его обратно. Конечно, это уродливый хак, но он выполняет свою работу.