comparison win/dw.c @ 295:aac3ab26d636

More key_press cleanups.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 26 Mar 2003 07:03:04 +0000
parents 144a94011265
children caed245ea8a1
comparison
equal deleted inserted replaced
294:144a94011265 295:aac3ab26d636
1276 static int command_active = 0; 1276 static int command_active = 0;
1277 SignalHandler *tmp = Root; 1277 SignalHandler *tmp = Root;
1278 void (*windowfunc)(PVOID); 1278 void (*windowfunc)(PVOID);
1279 ULONG origmsg = msg; 1279 ULONG origmsg = msg;
1280 1280
1281 /* Deal with translating some messages */
1281 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN) 1282 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN)
1282 msg = WM_LBUTTONDOWN; 1283 msg = WM_LBUTTONDOWN;
1283 if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) 1284 else if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP)
1284 msg = WM_LBUTTONUP; 1285 msg = WM_LBUTTONUP;
1285 if(msg == WM_HSCROLL) 1286 else if(msg == WM_HSCROLL)
1286 msg = WM_VSCROLL; 1287 msg = WM_VSCROLL;
1288 else if(msg == WM_KEYDOWN && mp1 >= VK_F1 && mp1 <= VK_F24)
1289 msg = WM_CHAR;
1287 1290
1288 if(result == -1) 1291 if(result == -1)
1289 { 1292 {
1290 /* Avoid infinite recursion */ 1293 /* Avoid infinite recursion */
1291 command_active = 1; 1294 command_active = 1;
1409 int (*keypressfunc)(HWND, char, int, int, void *) = tmp->signalfunction; 1412 int (*keypressfunc)(HWND, char, int, int, void *) = tmp->signalfunction;
1410 1413
1411 if(hWnd == tmp->window) 1414 if(hWnd == tmp->window)
1412 { 1415 {
1413 int special = 0; 1416 int special = 0;
1417 char ch = 0;
1414 1418
1415 if(GetAsyncKeyState(VK_SHIFT) & 0x8000) 1419 if(GetAsyncKeyState(VK_SHIFT) & 0x8000)
1416 special |= KC_SHIFT; 1420 special |= KC_SHIFT;
1417 if(GetAsyncKeyState(VK_CONTROL) & 0x8000) 1421 if(GetAsyncKeyState(VK_CONTROL) & 0x8000)
1418 special |= KC_CTRL; 1422 special |= KC_CTRL;
1419 if(mp2 & (1 << 29)) 1423 if(mp2 & (1 << 29))
1420 special |= KC_ALT; 1424 special |= KC_ALT;
1421 1425
1422 result = keypressfunc(tmp->window, mp1 > 255 ? 0 : (char)mp1, mp1, special, tmp->data); 1426 if(origmsg == WM_CHAR && mp1 < 128)
1427 ch = (char)mp1;
1428
1429 result = keypressfunc(tmp->window, ch, mp1, special, tmp->data);
1423 tmp = NULL; 1430 tmp = NULL;
1424 } 1431 }
1425 } 1432 }
1426 break; 1433 break;
1427 case WM_CLOSE: 1434 case WM_CLOSE:
1921 case WM_MOUSEMOVE: 1928 case WM_MOUSEMOVE:
1922 case WM_PAINT: 1929 case WM_PAINT:
1923 case WM_SIZE: 1930 case WM_SIZE:
1924 case WM_COMMAND: 1931 case WM_COMMAND:
1925 case WM_CHAR: 1932 case WM_CHAR:
1933 case WM_KEYDOWN:
1926 _wndproc(hWnd, msg, mp1, mp2); 1934 _wndproc(hWnd, msg, mp1, mp2);
1927 break; 1935 break;
1928 } 1936 }
1929 return DefWindowProc(hWnd, msg, mp1, mp2); 1937 return DefWindowProc(hWnd, msg, mp1, mp2);
1930 } 1938 }