NSBorderlessWindowMask Окно не будет показывать NSPanels, если не переднее большинство окон - PullRequest
1 голос
/ 22 ноября 2008

У меня есть окно, которое установлено с NSBorderlessWindowMask, а также kCGDesktopWindowLevel. Когда предполагается, что NSPanel появится из меню выбора значка Dock или меню элемента строки состояния, NSPanel не будет отображаться, если приложение не является самым передним окном.

Таким образом, в настоящее время эта программа имеет только пункт меню состояния (подумайте, как реализован QuickSilver), и когда я выбираю «Предпочтения» из своего меню, устанавливается отображение панели настроек с помощью Makekeyandorderfront, однако, если вы только не запустили приложение и больше ничего не делал, когда выбираешь Настройки, ничего не происходит.

Я обнаружил, что когда я выбираю пункт меню для проверки обновлений в Sparkle, появится панель проверки обновлений, а затем появится панель предпочтений, которую я велел открыть.

Так что, похоже, что makekeyandorderfront на самом деле не выводит его на передний план, возможно.

Кто-нибудь знает, как это исправить? Должен ли я позвонить, кроме makekeyandorderfront, или, может быть, что-то в связи с этим?

Заранее спасибо

1 Ответ

2 голосов
/ 22 ноября 2008

Панели спроектированы по умолчанию для работы таким образом. Они разработаны как вспомогательные окна для вашего приложения и всегда исчезают при деактивации приложения. Вы, вероятно, также столкнетесь с проблемами, когда панель станет ключевой ... но чтобы устранить проблему исчезающей панели, отправьте это сообщение на панель:

[panelObject setHidesOnDeactivate:NO];

Вероятно, вам следует использовать реальные объекты NSWindow вместо объектов NSPanel, но, поскольку я не очень разбираюсь в том, как работает ваше приложение, вам придется разобраться с этим самостоятельно. Для получения дополнительной информации о разнице между панелями и окнами, пожалуйста, просмотрите документацию здесь: Руководство по программированию окон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...