2012-03-26 5 views
0

Ich habe ein NPAPI (windowed-mode) Plugin, das in einem Popup-Fenster läuft. Unglücklicherweise gibt es einen Fehler in Chrome, bei dem der Fokus unerwartet aufgenommen wird und das Popup verdeckt ist. Mein Ziel ist es, diesen Fehler zu beheben, während er behoben wird.NPAPI-Plugin + NSWindow-Hierarchie in OS X - Kann ich die Eltern finden und nach vorne bringen?

SetWindow übergibt mir NPWindow *. Damit erhalte ich unter Windows ein gültiges HWND und kann zum übergeordneten HWND navigieren. Auf Mac (mit dem Cocoa-Modell) kann ich ein NSWindow bekommen, aber es scheint nicht gültig und scheint nichts konstruktiv zu tun, wenn ich makeKeyAndOrderFront oder eine andere Nachricht sende.

Sollte ich erwarten, ein gültiges NSWindow zu erhalten? Ist dieses NSWindow ein Child-Fenster, das irgendwie mit dem Top-Level-Fenster des Popups verbunden ist? Wenn ja, gibt es einen geeigneten Weg, dieses Fenster zu erhalten?

Antwort

1

Kurze Antwort: Nein

Lange Antwort: Nicht in einer Weise, die auf allen Browsern funktionieren wird und garantiert werden, nicht auf die nächste Version zu brechen.

Auf aktuellen Browsern läuft Ihr Plugin in einem anderen Prozess und der Browser organisiert die Zeichnung tatsächlich über Prozesse hinweg; Es gibt keine Verbindung zwischen NPWindow * und NSWindow, die für ein verfügbares Zeichnungsmodell verwendet wird. In Carbon (nur 32-Bit-Browser) gab es einen Hack, mit dem Sie diese Arbeit trotzdem machen konnten, aber es war nur ein Hack. Es funktioniert nicht mehr auf neueren Browsern.

Verwandte Themen