diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java | 57 |
1 files changed, 25 insertions, 32 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java index 0266918897..a0827a36fc 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/WebSite.java @@ -436,45 +436,38 @@ int TranslateAccelerator(long /*int*/ lpMsg, long /*int*/ pguidCmdGroup, int nCm switch (msg.message) { case OS.WM_KEYDOWN: case OS.WM_KEYUP: { - if (!OS.IsWinCE) { - boolean isAccent = false; - switch ((int)/*64*/msg.wParam) { - case OS.VK_SHIFT: - case OS.VK_MENU: - case OS.VK_CONTROL: - case OS.VK_CAPITAL: - case OS.VK_NUMLOCK: - case OS.VK_SCROLL: - break; - default: { - /* - * Bug in Windows. The high bit in the result of MapVirtualKey() on - * Windows NT is bit 32 while the high bit on Windows 95 is bit 16. - * They should both be bit 32. The fix is to test the right bit. - */ - int mapKey = OS.MapVirtualKey ((int)/*64*/msg.wParam, 2); - if (mapKey != 0) { - isAccent = (mapKey & (OS.IsWinNT ? 0x80000000 : 0x8000)) != 0; - if (!isAccent) { - for (int i=0; i<ACCENTS.length; i++) { - int value = OS.VkKeyScan (ACCENTS [i]); - if (value != -1 && (value & 0xFF) == msg.wParam) { - int state = value >> 8; - if ((OS.GetKeyState (OS.VK_SHIFT) < 0) == ((state & 0x1) != 0) && - (OS.GetKeyState (OS.VK_CONTROL) < 0) == ((state & 0x2) != 0) && - (OS.GetKeyState (OS.VK_MENU) < 0) == ((state & 0x4) != 0)) { - if ((state & 0x7) != 0) isAccent = true; - break; - } + boolean isAccent = false; + switch ((int)/*64*/msg.wParam) { + case OS.VK_SHIFT: + case OS.VK_MENU: + case OS.VK_CONTROL: + case OS.VK_CAPITAL: + case OS.VK_NUMLOCK: + case OS.VK_SCROLL: + break; + default: { + int mapKey = OS.MapVirtualKey ((int)/*64*/msg.wParam, 2); + if (mapKey != 0) { + isAccent = (mapKey & 0x80000000) != 0; + if (!isAccent) { + for (int i=0; i<ACCENTS.length; i++) { + int value = OS.VkKeyScan (ACCENTS [i]); + if (value != -1 && (value & 0xFF) == msg.wParam) { + int state = value >> 8; + if ((OS.GetKeyState (OS.VK_SHIFT) < 0) == ((state & 0x1) != 0) && + (OS.GetKeyState (OS.VK_CONTROL) < 0) == ((state & 0x2) != 0) && + (OS.GetKeyState (OS.VK_MENU) < 0) == ((state & 0x4) != 0)) { + if ((state & 0x7) != 0) isAccent = true; + break; } } } } - break; } + break; } - if (isAccent) result = COM.S_OK; } + if (isAccent) result = COM.S_OK; } } return result; |