зеркало из https://github.com/mozilla/pjs.git
Bug 628872 - BBC iplayer fullscreen function broken since FF4 beta 9. r=bent@mozilla.com, a=blocker
This commit is contained in:
Родитель
68f04cdd1b
Коммит
edf8e997c0
|
@ -51,7 +51,7 @@
|
|||
#ifdef XP_WIN
|
||||
#include "mozilla/gfx/SharedDIBSurface.h"
|
||||
#include "nsCrashOnException.h"
|
||||
|
||||
extern const PRUnichar* kFlashFullscreenClass;
|
||||
using mozilla::gfx::SharedDIBSurface;
|
||||
#endif
|
||||
#include "gfxSharedImageSurface.h"
|
||||
|
@ -1213,7 +1213,9 @@ PluginInstanceChild::PluginWindowProcInternal(HWND hWnd,
|
|||
return 0;
|
||||
}
|
||||
|
||||
NS_ASSERTION(self->mPluginWndProc != PluginWindowProc, "Self-referential windowproc happened inside our hook proc. Infinite recursion will happen soon.");
|
||||
NS_ASSERTION(self->mPluginWndProc != PluginWindowProc,
|
||||
"Self-referential windowproc happened inside our hook proc. "
|
||||
"Infinite recursion will happen soon.");
|
||||
|
||||
LRESULT res = CallWindowProc(self->mPluginWndProc, hWnd, message, wParam,
|
||||
lParam);
|
||||
|
@ -1221,17 +1223,17 @@ PluginInstanceChild::PluginWindowProcInternal(HWND hWnd,
|
|||
// Make sure capture is released by the child on mouse events. Fixes a
|
||||
// problem with flash full screen mode mouse input. Appears to be
|
||||
// caused by a bug in flash, since we are not setting the capture
|
||||
// on the window. (In non-oopp land, we would set and release via
|
||||
// widget for other reasons.)
|
||||
switch (message) {
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_LBUTTONUP:
|
||||
case WM_MBUTTONUP:
|
||||
case WM_RBUTTONUP:
|
||||
ReleaseCapture();
|
||||
break;
|
||||
// on the window.
|
||||
if (message == WM_LBUTTONDOWN &&
|
||||
self->GetQuirks() & PluginModuleChild::QUIRK_FLASH_FIXUP_MOUSE_CAPTURE) {
|
||||
PRUnichar szClass[26];
|
||||
HWND hwnd = GetForegroundWindow();
|
||||
if (hwnd && GetClassNameW(hwnd, szClass,
|
||||
sizeof(szClass)/sizeof(PRUnichar)) &&
|
||||
!wcscmp(szClass, kFlashFullscreenClass)) {
|
||||
ReleaseCapture();
|
||||
SetFocus(hwnd);
|
||||
}
|
||||
}
|
||||
|
||||
if (message == WM_CLOSE)
|
||||
|
|
|
@ -1862,6 +1862,7 @@ PluginModuleChild::InitQuirksModes(const nsCString& aMimeType)
|
|||
mQuirks |= QUIRK_FLASH_HOOK_SETLONGPTR;
|
||||
mQuirks |= QUIRK_FLASH_HOOK_GETWINDOWINFO;
|
||||
mQuirks |= QUIRK_FLASH_MASK_CLEARTYPE_SETTINGS;
|
||||
mQuirks |= QUIRK_FLASH_FIXUP_MOUSE_CAPTURE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -249,6 +249,9 @@ public:
|
|||
// Win: Flash trashes the alpha channel in our buffers when cleartype
|
||||
// is enabled. Mask this setting so they don't know it's enabled.
|
||||
QUIRK_FLASH_MASK_CLEARTYPE_SETTINGS = 1 << 6,
|
||||
// Win: Addresses a flash bug with mouse capture and full screen
|
||||
// windows.
|
||||
QUIRK_FLASH_FIXUP_MOUSE_CAPTURE = 1 << 7,
|
||||
};
|
||||
|
||||
int GetQuirks() { return mQuirks; }
|
||||
|
|
Загрузка…
Ссылка в новой задаче