Как автоматически закрыть NSPopover в NSStatusBar в Exposé/Mission Control

Для других приложений, таких как Dropbox и 1Password, всплывающее окно, которое открывается, когда вы нажимаете NSStatusItem на верхней панели, автоматически скрывается (а затем снова отображается), если вы открываете Exposé/Mission Control с помощью F3 для переключения пробелов.

Как это достигается? Я не могу найти хороший способ прослушивания события F3, как вы можете щелкнуть левой/правой кнопкой мыши, и 1Password работает, несмотря на то, что доступ к специальным возможностям включен что-то вроде этого.

Мысли?


person Alex Beals    schedule 01.04.2018    source источник


Ответы (1)


Это не лучший ответ, но в итоге я отказался от NSPopover. NSWindow имеет атрибут collectionBehavior, который управляет поведением NSWindow по отношению к другим пространствам и Expose. То поведение, которое я хотел (и которое я заметил в 1Password и Dropbox), можно воспроизвести с помощью window.collectionBehavior = [.transient, .ignoresCycle]. .transient делает так, что когда вы открываете Exposé, окно автоматически скрывается и снова открывается, когда вы его закрываете, а .ignoresCycle заставляет его не вести себя как настоящее окно при переключении между окнами. Затем я просто представляю его, когда элемент NSStatusBar переключается, и скрываю его в противном случае.

person Alex Beals    schedule 08.04.2018