comparison os2/dw.c @ 300:4559a2fd2db2

Keypress handler fixes, more need to be done, because I screwed up and looked at PMWIN.H instead of the OS/2 header.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 27 Mar 2003 10:43:58 +0000
parents caed245ea8a1
children 9d13efce2894
comparison
equal deleted inserted replaced
299:2a97f8d9b297 300:4559a2fd2db2
194 } 194 }
195 if(box > 0) 195 if(box > 0)
196 return lastbox; 196 return lastbox;
197 return handle; 197 return handle;
198 } 198 }
199
199 200
200 /* Return the entryfield child of a window */ 201 /* Return the entryfield child of a window */
201 HWND _find_entryfield(HWND handle) 202 HWND _find_entryfield(HWND handle)
202 { 203 {
203 HENUM henum; 204 HENUM henum;
1972 break; 1973 break;
1973 case WM_CHAR: 1974 case WM_CHAR:
1974 { 1975 {
1975 int (* API keypressfunc)(HWND, char, int, int, void *) = (int (* API)(HWND, char, int, int, void *))tmp->signalfunction; 1976 int (* API keypressfunc)(HWND, char, int, int, void *) = (int (* API)(HWND, char, int, int, void *))tmp->signalfunction;
1976 1977
1977 if(hWnd == tmp->window && !(SHORT1FROMMP(mp1) & KC_KEYUP)) 1978 if((hWnd == tmp->window || _toplevel_window(hWnd) == tmp->window) && !(SHORT1FROMMP(mp1) & KC_KEYUP))
1978 { 1979 {
1979 int vk; 1980 int vk;
1980 char ch = 0; 1981 char ch = 0;
1981 1982
1982 if(SHORT1FROMMP(mp1) & KC_CHAR) 1983 if(SHORT1FROMMP(mp1) & KC_CHAR)
1983 ch = (char)SHORT1FROMMP(mp2); 1984 ch = (char)SHORT1FROMMP(mp2);
1984 if(SHORT1FROMMP(mp1) & KC_VIRTUALKEY) 1985 if(SHORT1FROMMP(mp1) & KC_VIRTUALKEY)
1985 vk = SHORT2FROMMP(mp2); 1986 vk = SHORT2FROMMP(mp2);
1986 else 1987 else
1987 vk = SHORT1FROMMP(mp2); 1988 vk = SHORT1FROMMP(mp2) + 128;
1988 1989
1989 /* This is a hack to fix shift presses showing 1990 /* This is a hack to fix shift presses showing
1990 * up as tabs! 1991 * up as tabs!
1991 */ 1992 */
1992 if(ch == '\t' && !(SHORT1FROMMP(mp1) & KC_CHAR)) 1993 if(ch == '\t' && !(SHORT1FROMMP(mp1) & KC_CHAR))