Показать окно из 32-битного плагина NPAPI в 64-битном Safari - PullRequest
2 голосов
/ 23 февраля 2010

У меня есть старый плагин NPAPI для OS X, который я пытаюсь заменить для использования с версией Safari Snow Leopard. Моя проблема в том, что когда я переключаю Safari в 64-битный режим, он изменяет среду плагина на выход из режима процесса (где плагины размещаются 32-битным процессом WebKitPluginHost). И теперь мои палитры панели инструментов не видны на экране, хотя панели NSP, на которых они основаны, думают, что они видимы. Документация гласит, что вызывать окна не рекомендуется, но не запрещается; что я могу сделать, чтобы открыть мою Windows?

Ответы [ 3 ]

3 голосов
/ 05 апреля 2010

Самое надежное решение - просто позволить другому приложению, возможно подключенному к вашему плагину через какой-либо механизм IPC, сделать это Apple :

Избегайте создания окон. Цель заключается в том, чтобы плагины работали в окне браузера.Хотя некоторые плагины исторически так и делали, создание окон в вашем плагине не рекомендуется.Если вам нужно поддерживать отдельные окна, вам следует рассмотреть возможность запуска отдельного приложения.

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

1 голос
/ 14 марта 2010

К сожалению, вероятно, нет. Если вы делаете что-либо, что невозможно с помощью обычных графических библиотек (CoreAnimation, Cocoa и т. Д.), Вы, вероятно, не сможете сделать это с помощью 32-битного плагина в 64-битном сафари.

Возможно, вы сможете сделать больше, если скомпилируете плагин в 64-битном режиме. Я не знаю: - /

0 голосов
/ 05 октября 2011

Я знаю, что немного опоздал. Safari не позволяет плагину отображать NSPanel. Вместо этого вы должны попробовать использовать NSWindow. Я знаю, что Apple не согласна.

Для отображения меню вы можете использовать «popupcontextmenu». Требуется NPNSMenu, типизированный NSMenu.

...