Мы делаем плагин для браузера Safari на Mac.
После просмотра в Интернете я обнаружил, что обычно плагины на Mac не имеют окон, но мне нужен оконный плагин. Даже в функции NPP_SetWindow я попытался напечатать значение переменной type (которая имеет тип NPWindowType) следующим образом:
NPError NPP_SetWindow(NPP instance, NPWindow * pNPWindow)
{
...
printf("....: %d",pNPWindow->type);
...
}
Он печатает 2, т. е. его значение NPWindowTypeDrawable означает отсутствие окон.
Более того, я где-то читал следующий код:
NPError NPP_New(NPMIMEType pluginType,
NPP instance, uint16 mode,
int16 argc, char *argn[],
char *argv[], NPSavedData *saved)
{
...
NPError result = NPN_SetValue(instance, NPPVpluginWindowBool, (void*)false);
}
Здесь говорится, что плагин можно сделать без окон, передав значение для NPPVpluginWindowBool как false в вызове функции NPN_SetValue. Если плагин не выполняет этот вызов, он считается оконным плагином. Но затем он также говорит, что «плагины в Mac OS X всегда без окон». Я еще не был уверен в этом.
У меня вопрос: будет ли передача значения true для NPPVpluginWindowBool здесь делать плагин оконным? Я еще не пробовал.
Пожалуйста, предложите, как сделать его оконным плагином программно или любым другим способом, чтобы pNPWindow->type (в первом фрагменте кода) также печатал 1, т.е. NPWindowTypeWindow означает оконный плагин.
Спасибо.