- Fix API see CORE-8107.
authorJames Tabor <james.tabor@reactos.org>
Fri, 9 May 2014 23:08:56 +0000 (23:08 +0000)
committerJames Tabor <james.tabor@reactos.org>
Fri, 9 May 2014 23:08:56 +0000 (23:08 +0000)
svn path=/trunk/; revision=63210

reactos/win32ss/user/user32/windows/accel.c

index 40db647..cc25f91 100644 (file)
@@ -344,21 +344,26 @@ HACCEL WINAPI CreateAcceleratorTableA(LPACCEL lpaccl, int cEntries)
  */
 int WINAPI TranslateAcceleratorA(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg)
 {
- MSG mCopy = *lpMsg;
- CHAR cChar;
- WCHAR wChar;
- NTSTATUS Status;
-
- if(!U32IsValidAccelMessage(lpMsg->message)) return 0;
-
- Status = RtlMultiByteToUnicodeN(&wChar, sizeof(wChar), NULL, &cChar, sizeof(cChar));
- if(!NT_SUCCESS(Status))
- {
-  SetLastError(RtlNtStatusToDosError(Status));
-  return 0;
- }
-
- return TranslateAcceleratorW(hWnd, hAccTable, &mCopy);
+    switch (lpMsg->message)
+    {
+    case WM_KEYDOWN:
+    case WM_SYSKEYDOWN:
+        return TranslateAcceleratorW( hWnd, hAccTable, lpMsg );
+
+    case WM_CHAR:
+    case WM_SYSCHAR:
+        {
+            MSG msgW = *lpMsg;
+            char ch = LOWORD(lpMsg->wParam);
+            WCHAR wch;
+            MultiByteToWideChar(CP_ACP, 0, &ch, 1, &wch, 1);
+            msgW.wParam = MAKEWPARAM(wch, HIWORD(lpMsg->wParam));
+            return TranslateAcceleratorW( hWnd, hAccTable, &msgW );
+        }
+
+    default:
+        return 0;
+    }
 }
 
 /* EOF */