Mercurial > dwindows
comparison os2/dw.c @ 207:767fca804cea
Fixed scrollbar value_change on OS/2... ID must be set on the scrollbar,
similar to OS/2 container widgets.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 01 Feb 2003 09:15:29 +0000 |
parents | e0beea487e8f |
children | b9c7b762c104 |
comparison
equal
deleted
inserted
replaced
206:f7911991c5df | 207:767fca804cea |
---|---|
1869 if(msg == WM_BUTTON2DOWN || msg == WM_BUTTON3DOWN) | 1869 if(msg == WM_BUTTON2DOWN || msg == WM_BUTTON3DOWN) |
1870 msg = WM_BUTTON1DOWN; | 1870 msg = WM_BUTTON1DOWN; |
1871 if(msg == WM_BUTTON2UP || msg == WM_BUTTON3UP) | 1871 if(msg == WM_BUTTON2UP || msg == WM_BUTTON3UP) |
1872 msg = WM_BUTTON1UP; | 1872 msg = WM_BUTTON1UP; |
1873 if(msg == WM_VSCROLL || msg == WM_HSCROLL) | 1873 if(msg == WM_VSCROLL || msg == WM_HSCROLL) |
1874 msg = SLN_SLIDERTRACK; | 1874 msg = WM_CONTROL; |
1875 | 1875 |
1876 /* Find any callbacks for this function */ | 1876 /* Find any callbacks for this function */ |
1877 while(tmp) | 1877 while(tmp) |
1878 { | 1878 { |
1879 if(tmp->message == msg || msg == WM_CONTROL || tmp->message == WM_USER+1) | 1879 if(tmp->message == msg || msg == WM_CONTROL || tmp->message == WM_USER+1) |
2048 tmp = NULL; | 2048 tmp = NULL; |
2049 } | 2049 } |
2050 } | 2050 } |
2051 break; | 2051 break; |
2052 case WM_CONTROL: | 2052 case WM_CONTROL: |
2053 if(tmp->message == SHORT2FROMMP(mp1) || (tmp->message == SLN_SLIDERTRACK && SHORT2FROMMP(mp1) == SLN_CHANGE)) | 2053 if(origmsg == WM_VSCROLL || origmsg == WM_HSCROLL || tmp->message == SHORT2FROMMP(mp1) || |
2054 (tmp->message == SLN_SLIDERTRACK && SHORT2FROMMP(mp1) == SLN_CHANGE)) | |
2054 { | 2055 { |
2055 switch(SHORT2FROMMP(mp1)) | 2056 int svar = SLN_SLIDERTRACK; |
2057 if(origmsg == WM_CONTROL) | |
2058 svar = SHORT2FROMMP(mp1); | |
2059 | |
2060 switch(svar) | |
2056 { | 2061 { |
2057 case CN_ENTER: | 2062 case CN_ENTER: |
2058 { | 2063 { |
2059 int (* API containerselectfunc)(HWND, char *, void *) = (int (* API)(HWND, char *, void *))tmp->signalfunction; | 2064 int (* API containerselectfunc)(HWND, char *, void *) = (int (* API)(HWND, char *, void *))tmp->signalfunction; |
2060 int id = SHORT1FROMMP(mp1); | 2065 int id = SHORT1FROMMP(mp1); |
2240 break; | 2245 break; |
2241 case SLN_SLIDERTRACK: | 2246 case SLN_SLIDERTRACK: |
2242 { | 2247 { |
2243 int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))tmp->signalfunction; | 2248 int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))tmp->signalfunction; |
2244 | 2249 |
2245 if(origmsg == SLN_SLIDERTRACK) | 2250 if(origmsg == WM_CONTROL) |
2246 { | 2251 { |
2247 /* Handle Slider control */ | 2252 /* Handle Slider control */ |
2248 if(tmp->window == hWnd || WinQueryWindow(tmp->window, QW_PARENT) == hWnd) | 2253 if(tmp->window == hWnd || WinQueryWindow(tmp->window, QW_PARENT) == hWnd) |
2249 { | 2254 { |
2250 static int lastvalue = -1; | 2255 static int lastvalue = -1; |
2261 } | 2266 } |
2262 } | 2267 } |
2263 else | 2268 else |
2264 { | 2269 { |
2265 /* Handle scrollbar control */ | 2270 /* Handle scrollbar control */ |
2266 if(tmp->window = hWnd) | 2271 if(tmp->window > 65535 && tmp->window == WinWindowFromID(hWnd, (ULONG)mp1)) |
2267 { | 2272 { |
2268 int pos = (int) SHORT1FROMMP(mp2); | 2273 int pos = (int) SHORT1FROMMP(mp2); |
2269 | 2274 |
2270 dw_window_set_data(hWnd, "_dw_scrollbar_value", (void *)pos); | 2275 dw_window_set_data(tmp->window, "_dw_scrollbar_value", (void *)pos); |
2271 result = valuechangedfunc(tmp->window, pos, tmp->data); | 2276 result = valuechangedfunc(tmp->window, pos, tmp->data); |
2272 tmp = NULL; | 2277 tmp = NULL; |
2273 } | 2278 } |
2274 } | 2279 } |
2275 } | 2280 } |
2293 { | 2298 { |
2294 Box *blah = WinQueryWindowPtr(hWnd, QWP_USER); | 2299 Box *blah = WinQueryWindowPtr(hWnd, QWP_USER); |
2295 | 2300 |
2296 switch(msg) | 2301 switch(msg) |
2297 { | 2302 { |
2303 case WM_VSCROLL: | |
2304 case WM_HSCROLL: | |
2298 case WM_CONTROL: | 2305 case WM_CONTROL: |
2299 _run_event(hWnd, msg, mp1, mp2); | 2306 _run_event(hWnd, msg, mp1, mp2); |
2300 break; | 2307 break; |
2301 } | 2308 } |
2302 | 2309 |
4325 * increments: Number of increments available. | 4332 * increments: Number of increments available. |
4326 * id: An ID to be used with WinWindowFromID() or 0L. | 4333 * id: An ID to be used with WinWindowFromID() or 0L. |
4327 */ | 4334 */ |
4328 HWND API dw_scrollbar_new(int vertical, int increments, ULONG id) | 4335 HWND API dw_scrollbar_new(int vertical, int increments, ULONG id) |
4329 { | 4336 { |
4330 HWND tmp; | 4337 return WinCreateWindow(HWND_OBJECT, |
4331 | 4338 WC_SCROLLBAR, |
4332 tmp = WinCreateWindow(HWND_OBJECT, | 4339 "", |
4333 WC_SCROLLBAR, | 4340 WS_VISIBLE | SBS_AUTOTRACK | |
4334 "", | 4341 (vertical ? SBS_VERT : SBS_HORZ), |
4335 WS_VISIBLE | SBS_AUTOTRACK | | 4342 0,0,2000,1000, |
4336 (vertical ? SBS_VERT : SBS_HORZ), | 4343 NULLHANDLE, |
4337 0,0,2000,1000, | 4344 HWND_TOP, |
4338 NULLHANDLE, | 4345 id, |
4339 HWND_TOP, | 4346 NULL, |
4340 id, | 4347 NULL); |
4341 NULL, | |
4342 NULL); | |
4343 return tmp; | |
4344 } | 4348 } |
4345 | 4349 |
4346 /* | 4350 /* |
4347 * Create a new percent bar window (widget) to be packed. | 4351 * Create a new percent bar window (widget) to be packed. |
4348 * Parameters: | 4352 * Parameters: |