Плагин NPAPI + иерархия NSWindow в OS X - Могу ли я найти родителя и вывести его на передний план? - PullRequest
0 голосов
/ 26 марта 2012

У меня есть плагин NPAPI (оконный режим), работающий во всплывающем окне.К сожалению, в Chrome есть ошибка, когда он неожиданно захватывает фокус и всплывающее окно закрывается.Моя цель - обойти эту ошибку, пока она исправлена.

SetWindow передает мне NPWindow *.Используя это, в Windows я получаю действительный HWND и могу перейти к родительскому HWND.На Mac (с использованием модели Какао) я могу получить NSWindow, но оно не выглядит корректным и, кажется, не делает ничего конструктивного, когда я посылаю makeKeyAndOrderFront или любое другое сообщение.

Должен ли я ожидать правильное NSWindow?Является ли это NSWindow дочерним окном, каким-то образом связанным с окном верхнего уровня всплывающего окна?Если так, есть ли подходящий способ получить это окно?

1 Ответ

1 голос
/ 26 марта 2012

Краткий ответ: Нет

Более длинный ответ: Не так, чтобы он работал во всех браузерах и гарантированно не ломался в следующей версии.

В текущих браузерах ваш плагин работаетв другом процессе, и браузер все равно распределяет чертеж между процессами;нет никакой связи между NPWindow * и NSWindow, которые используются в любой доступной модели чертежа.В Carbon (только для 32-битных браузеров) был взлом, который вы могли бы использовать, чтобы заставить это работать в любом случае, но это был просто взлом.Он больше не работает в новых браузерах.

...