comparison os2/dw.c @ 267:bf8b907f8a29

Added initial version of updated key_press_event callback.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 03 Mar 2003 19:50:19 +0000
parents 9ea4ac9a097f
children dfbda83b7cad
comparison
equal deleted inserted replaced
266:5c5bee286d0e 267:bf8b907f8a29
2060 } 2060 }
2061 } 2061 }
2062 break; 2062 break;
2063 case WM_CHAR: 2063 case WM_CHAR:
2064 { 2064 {
2065 int (* API keypressfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))tmp->signalfunction; 2065 int (* API keypressfunc)(HWND, char, int, int, void *) = (int (* API)(HWND, char, int, int, void *))tmp->signalfunction;
2066 2066
2067 if(hWnd == tmp->window) 2067 if(hWnd == tmp->window && !(SHORT1FROMMP(mp1) & KC_KEYUP))
2068 { 2068 {
2069 result = keypressfunc(tmp->window, SHORT1FROMMP(mp2), tmp->data); 2069 int vk;
2070 char ch;
2071
2072 if(SHORT1FROMMP(mp1) & KC_CHAR)
2073 ch = (char)SHORT1FROMMP(mp2);
2074 else
2075 ch = (char)SHORT2FROMMP(mp2);
2076 if(SHORT1FROMMP(mp1) & KC_VIRTUALKEY)
2077 vk = SHORT2FROMMP(mp2);
2078 else
2079 vk = SHORT1FROMMP(mp2);
2080
2081 /* This is a hack to fix shift presses showing
2082 * up as tabs!
2083 */
2084 if(ch == '\t' && !(SHORT1FROMMP(mp1) & KC_CHAR))
2085 {
2086 ch = 0;
2087 vk = VK_SHIFT;
2088 }
2089
2090 result = keypressfunc(tmp->window, ch, vk,
2091 SHORT1FROMMP(mp1) & (KC_ALT | KC_SHIFT | KC_CTRL), tmp->data);
2070 tmp = NULL; 2092 tmp = NULL;
2071 } 2093 }
2072 } 2094 }
2073 break; 2095 break;
2074 case WM_CLOSE: 2096 case WM_CLOSE:
3041 switch(msg) 3063 switch(msg)
3042 { 3064 {
3043 case WM_BUTTON1DOWN: 3065 case WM_BUTTON1DOWN:
3044 case WM_BUTTON2DOWN: 3066 case WM_BUTTON2DOWN:
3045 case WM_BUTTON3DOWN: 3067 case WM_BUTTON3DOWN:
3046 if(res) 3068 if(res == -1)
3069 WinSetFocus(HWND_DESKTOP, hwnd);
3070 else if(res)
3047 return (MPARAM)TRUE; 3071 return (MPARAM)TRUE;
3048 } 3072 }
3049 return WinDefWindowProc(hwnd, msg, mp1, mp2); 3073 return WinDefWindowProc(hwnd, msg, mp1, mp2);
3050 } 3074 }
3051 3075