Mercurial > dwindows
comparison os2/dw.c @ 531:79696a852401
Added DW_POINTER_DEFAULT, this will return the pointer to the default
system state and no longer override the window's cursors.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 23 Mar 2004 20:50:41 +0000 |
parents | 27533e1ccaf5 |
children | b0b5b880513a |
comparison
equal
deleted
inserted
replaced
530:27533e1ccaf5 | 531:79696a852401 |
---|---|
1436 /* This procedure handles drawing of a status border */ | 1436 /* This procedure handles drawing of a status border */ |
1437 MRESULT EXPENTRY _statusproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) | 1437 MRESULT EXPENTRY _statusproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) |
1438 { | 1438 { |
1439 PFNWP *blah = WinQueryWindowPtr(hWnd, QWP_USER); | 1439 PFNWP *blah = WinQueryWindowPtr(hWnd, QWP_USER); |
1440 | 1440 |
1441 if(msg == WM_MOUSEMOVE) | 1441 if(msg == WM_MOUSEMOVE && _wndproc(hWnd, msg, mp1, mp2)) |
1442 return _wndproc(hWnd, msg, mp1, mp2); | 1442 return MPFROMSHORT(FALSE); |
1443 | 1443 |
1444 if(blah && *blah) | 1444 if(blah && *blah) |
1445 { | 1445 { |
1446 PFNWP myfunc = *blah; | 1446 PFNWP myfunc = *blah; |
1447 | 1447 |
1476 WinEndPaint(hpsPaint); | 1476 WinEndPaint(hpsPaint); |
1477 | 1477 |
1478 return (MRESULT)TRUE; | 1478 return (MRESULT)TRUE; |
1479 } | 1479 } |
1480 } | 1480 } |
1481 return myfunc(hWnd, msg, mp1, mp2); | |
1482 } | |
1483 | |
1484 return WinDefWindowProc(hWnd, msg, mp1, mp2); | |
1485 } | |
1486 | |
1487 /* This procedure handles pointer changes */ | |
1488 MRESULT EXPENTRY _textproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) | |
1489 { | |
1490 PFNWP *blah = WinQueryWindowPtr(hWnd, QWP_USER); | |
1491 | |
1492 if(msg == WM_MOUSEMOVE &&_wndproc(hWnd, msg, mp1, mp2)) | |
1493 return MPFROMSHORT(FALSE); | |
1494 | |
1495 if(blah && *blah) | |
1496 { | |
1497 PFNWP myfunc = *blah; | |
1498 | |
1481 return myfunc(hWnd, msg, mp1, mp2); | 1499 return myfunc(hWnd, msg, mp1, mp2); |
1482 } | 1500 } |
1483 | 1501 |
1484 return WinDefWindowProc(hWnd, msg, mp1, mp2); | 1502 return WinDefWindowProc(hWnd, msg, mp1, mp2); |
1485 } | 1503 } |
1678 int pos = (int)dw_window_get_data(hWnd, "_dw_slider_value"); | 1696 int pos = (int)dw_window_get_data(hWnd, "_dw_slider_value"); |
1679 WinSendMsg(hWnd, SLM_SETSLIDERINFO, MPFROM2SHORT(SMA_SLIDERARMPOSITION, SMA_INCREMENTVALUE), (MPARAM)pos); | 1697 WinSendMsg(hWnd, SLM_SETSLIDERINFO, MPFROM2SHORT(SMA_SLIDERARMPOSITION, SMA_INCREMENTVALUE), (MPARAM)pos); |
1680 } | 1698 } |
1681 break; | 1699 break; |
1682 case WM_MOUSEMOVE: | 1700 case WM_MOUSEMOVE: |
1683 return _wndproc(hWnd, msg, mp1, mp2); | 1701 if(_wndproc(hWnd, msg, mp1, mp2)) |
1702 return MPFROMSHORT(FALSE); | |
1703 break; | |
1684 } | 1704 } |
1685 | 1705 |
1686 if(oldproc) | 1706 if(oldproc) |
1687 return oldproc(hWnd, msg, mp1, mp2); | 1707 return oldproc(hWnd, msg, mp1, mp2); |
1688 | 1708 |
1695 WindowData *blah = (WindowData *)WinQueryWindowPtr(hWnd, QWP_USER); | 1715 WindowData *blah = (WindowData *)WinQueryWindowPtr(hWnd, QWP_USER); |
1696 | 1716 |
1697 switch(msg) | 1717 switch(msg) |
1698 { | 1718 { |
1699 case WM_MOUSEMOVE: | 1719 case WM_MOUSEMOVE: |
1700 return _wndproc(hWnd, msg, mp1, mp2); | 1720 if(_wndproc(hWnd, msg, mp1, mp2)) |
1721 return MPFROMSHORT(FALSE); | |
1722 break; | |
1701 case WM_CONTEXTMENU: | 1723 case WM_CONTEXTMENU: |
1702 case WM_COMMAND: | 1724 case WM_COMMAND: |
1703 return _entryproc(hWnd, msg, mp1, mp2); | 1725 return _entryproc(hWnd, msg, mp1, mp2); |
1704 case WM_SETFOCUS: | 1726 case WM_SETFOCUS: |
1705 _run_event(hWnd, msg, mp1, mp2); | 1727 _run_event(hWnd, msg, mp1, mp2); |
1746 oldproc = blah->oldproc; | 1768 oldproc = blah->oldproc; |
1747 | 1769 |
1748 switch(msg) | 1770 switch(msg) |
1749 { | 1771 { |
1750 case WM_MOUSEMOVE: | 1772 case WM_MOUSEMOVE: |
1751 return _wndproc(hWnd, msg, mp1, mp2); | 1773 if(_wndproc(hWnd, msg, mp1, mp2)) |
1774 return MPFROMSHORT(FALSE); | |
1775 break; | |
1752 case WM_CONTEXTMENU: | 1776 case WM_CONTEXTMENU: |
1753 case WM_COMMAND: | 1777 case WM_COMMAND: |
1754 return _entryproc(hWnd, msg, mp1, mp2); | 1778 return _entryproc(hWnd, msg, mp1, mp2); |
1755 } | 1779 } |
1756 | 1780 |
1793 oldproc = blah->oldproc; | 1817 oldproc = blah->oldproc; |
1794 | 1818 |
1795 switch(msg) | 1819 switch(msg) |
1796 { | 1820 { |
1797 case WM_MOUSEMOVE: | 1821 case WM_MOUSEMOVE: |
1798 return _wndproc(hWnd, msg, mp1, mp2); | 1822 if(_wndproc(hWnd, msg, mp1, mp2)) |
1823 return MPFROMSHORT(FALSE); | |
1824 break; | |
1799 case WM_SIZE: | 1825 case WM_SIZE: |
1800 WinPostMsg(hWnd, WM_USER+7, 0, 0); | 1826 WinPostMsg(hWnd, WM_USER+7, 0, 0); |
1801 break; | 1827 break; |
1802 case WM_USER+7: | 1828 case WM_USER+7: |
1803 WinSendMsg(hWnd, SLM_SETSLIDERINFO, MPFROM2SHORT(SMA_SLIDERARMPOSITION,SMA_RANGEVALUE), (MPARAM)_dw_int_pos(hWnd)); | 1829 WinSendMsg(hWnd, SLM_SETSLIDERINFO, MPFROM2SHORT(SMA_SLIDERARMPOSITION,SMA_RANGEVALUE), (MPARAM)_dw_int_pos(hWnd)); |
1822 oldproc = blah->oldproc; | 1848 oldproc = blah->oldproc; |
1823 | 1849 |
1824 switch(msg) | 1850 switch(msg) |
1825 { | 1851 { |
1826 case WM_MOUSEMOVE: | 1852 case WM_MOUSEMOVE: |
1827 return _wndproc(hWnd, msg, mp1, mp2); | 1853 if(_wndproc(hWnd, msg, mp1, mp2)) |
1854 return MPFROMSHORT(FALSE); | |
1855 break; | |
1828 case WM_CHAR: | 1856 case WM_CHAR: |
1829 if(SHORT1FROMMP(mp2) == '\t') | 1857 if(SHORT1FROMMP(mp2) == '\t') |
1830 { | 1858 { |
1831 if(CHARMSG(&msg)->fs & KC_SHIFT) | 1859 if(CHARMSG(&msg)->fs & KC_SHIFT) |
1832 _shift_focus_back(hWnd); | 1860 _shift_focus_back(hWnd); |
2512 Box *blah = WinQueryWindowPtr(hWnd, QWP_USER); | 2540 Box *blah = WinQueryWindowPtr(hWnd, QWP_USER); |
2513 | 2541 |
2514 switch(msg) | 2542 switch(msg) |
2515 { | 2543 { |
2516 case WM_MOUSEMOVE: | 2544 case WM_MOUSEMOVE: |
2517 return _wndproc(hWnd, msg, mp1, mp2); | 2545 if(_wndproc(hWnd, msg, mp1, mp2)) |
2546 return MPFROMSHORT(FALSE); | |
2547 break; | |
2518 case WM_VSCROLL: | 2548 case WM_VSCROLL: |
2519 case WM_HSCROLL: | 2549 case WM_HSCROLL: |
2520 if(_run_event(hWnd, msg, mp1, mp2)) | 2550 if(_run_event(hWnd, msg, mp1, mp2)) |
2521 { | 2551 { |
2522 HWND window = WinWindowFromID(hWnd, (ULONG)mp1); | 2552 HWND window = WinWindowFromID(hWnd, (ULONG)mp1); |
2675 | 2705 |
2676 if((pointer = (HPOINTER)dw_window_get_data(hWnd, "_dw_pointer")) || | 2706 if((pointer = (HPOINTER)dw_window_get_data(hWnd, "_dw_pointer")) || |
2677 (pointer = (HPOINTER)dw_window_get_data(_toplevel_window(hWnd), "_dw_pointer"))) | 2707 (pointer = (HPOINTER)dw_window_get_data(_toplevel_window(hWnd), "_dw_pointer"))) |
2678 { | 2708 { |
2679 WinSetPointer(HWND_DESKTOP, pointer); | 2709 WinSetPointer(HWND_DESKTOP, pointer); |
2710 return MRFROMSHORT(TRUE); | |
2680 } | 2711 } |
2681 } | 2712 } |
2682 return MRFROMSHORT(FALSE); | 2713 return MRFROMSHORT(FALSE); |
2683 case WM_USER: | 2714 case WM_USER: |
2684 windowfunc = (void (* API)(void *))mp1; | 2715 windowfunc = (void (* API)(void *))mp1; |
3027 oldproc = bubble->pOldProc; | 3058 oldproc = bubble->pOldProc; |
3028 | 3059 |
3029 switch(msg) | 3060 switch(msg) |
3030 { | 3061 { |
3031 case WM_MOUSEMOVE: | 3062 case WM_MOUSEMOVE: |
3032 return _wndproc(hwnd, msg, mp1, mp2); | 3063 if(_wndproc(hwnd, msg, mp1, mp2)) |
3064 return MPFROMSHORT(FALSE); | |
3065 break; | |
3033 case WM_PAINT: | 3066 case WM_PAINT: |
3034 return _button_draw(hwnd, msg, mp1, mp2, oldproc, 0); | 3067 return _button_draw(hwnd, msg, mp1, mp2, oldproc, 0); |
3035 case BM_SETHILITE: | 3068 case BM_SETHILITE: |
3036 return _button_draw(hwnd, msg, mp1, mp2, oldproc, (int)mp1); | 3069 return _button_draw(hwnd, msg, mp1, mp2, oldproc, (int)mp1); |
3037 case WM_SETFOCUS: | 3070 case WM_SETFOCUS: |
3239 int res = 0; | 3272 int res = 0; |
3240 res = (int)_run_event(hwnd, msg, mp1, mp2); | 3273 res = (int)_run_event(hwnd, msg, mp1, mp2); |
3241 switch(msg) | 3274 switch(msg) |
3242 { | 3275 { |
3243 case WM_MOUSEMOVE: | 3276 case WM_MOUSEMOVE: |
3244 return _wndproc(hwnd, msg, mp1, mp2); | 3277 if(_wndproc(hwnd, msg, mp1, mp2)) |
3278 return MPFROMSHORT(FALSE); | |
3279 break; | |
3245 case WM_BUTTON1DOWN: | 3280 case WM_BUTTON1DOWN: |
3246 case WM_BUTTON2DOWN: | 3281 case WM_BUTTON2DOWN: |
3247 case WM_BUTTON3DOWN: | 3282 case WM_BUTTON3DOWN: |
3248 if(res == -1) | 3283 if(res == -1) |
3249 WinSetFocus(HWND_DESKTOP, hwnd); | 3284 WinSetFocus(HWND_DESKTOP, hwnd); |
3262 oldproc = blah->oldproc; | 3297 oldproc = blah->oldproc; |
3263 | 3298 |
3264 switch(msg) | 3299 switch(msg) |
3265 { | 3300 { |
3266 case WM_MOUSEMOVE: | 3301 case WM_MOUSEMOVE: |
3267 return _wndproc(hwnd, msg, mp1, mp2); | 3302 if(_wndproc(hwnd, msg, mp1, mp2)) |
3303 return MPFROMSHORT(FALSE); | |
3304 break; | |
3268 case WM_PAINT: | 3305 case WM_PAINT: |
3269 { | 3306 { |
3270 HPS hps; | 3307 HPS hps; |
3271 RECTL rcl; | 3308 RECTL rcl; |
3272 POINTL ptl[2]; | 3309 POINTL ptl[2]; |
3854 { | 3891 { |
3855 HPOINTER pointer = pointertype < 65535 ? | 3892 HPOINTER pointer = pointertype < 65535 ? |
3856 WinQuerySysPointer(HWND_DESKTOP, pointertype, FALSE) | 3893 WinQuerySysPointer(HWND_DESKTOP, pointertype, FALSE) |
3857 : (HPOINTER)pointertype; | 3894 : (HPOINTER)pointertype; |
3858 | 3895 |
3859 WinSetPointer(HWND_DESKTOP, pointer); | 3896 if(!pointertype) |
3860 | 3897 dw_window_set_data(handle, "_dw_pointer", 0); |
3861 if(handle != HWND_DESKTOP) | 3898 else |
3862 dw_window_set_data(handle, "_dw_pointer", (void *)pointer); | 3899 { |
3900 WinSetPointer(HWND_DESKTOP, pointer); | |
3901 | |
3902 if(handle != HWND_DESKTOP) | |
3903 dw_window_set_data(handle, "_dw_pointer", (void *)pointer); | |
3904 } | |
3863 } | 3905 } |
3864 | 3906 |
3865 /* | 3907 /* |
3866 * Create a new Window Frame. | 3908 * Create a new Window Frame. |
3867 * Parameters: | 3909 * Parameters: |
4317 * text: The text to be display by the static text widget. | 4359 * text: The text to be display by the static text widget. |
4318 * id: An ID to be used with dw_window_from_id() or 0L. | 4360 * id: An ID to be used with dw_window_from_id() or 0L. |
4319 */ | 4361 */ |
4320 HWND API dw_text_new(char *text, ULONG id) | 4362 HWND API dw_text_new(char *text, ULONG id) |
4321 { | 4363 { |
4364 WindowData *blah = calloc(sizeof(WindowData), 1); | |
4322 HWND tmp = WinCreateWindow(HWND_OBJECT, | 4365 HWND tmp = WinCreateWindow(HWND_OBJECT, |
4323 WC_STATIC, | 4366 WC_STATIC, |
4324 text, | 4367 text, |
4325 WS_VISIBLE | SS_TEXT, | 4368 WS_VISIBLE | SS_TEXT, |
4326 0,0,2000,1000, | 4369 0,0,2000,1000, |
4327 NULLHANDLE, | 4370 NULLHANDLE, |
4328 HWND_TOP, | 4371 HWND_TOP, |
4329 id, | 4372 id, |
4330 NULL, | 4373 NULL, |
4331 NULL); | 4374 NULL); |
4375 blah->oldproc = WinSubclassWindow(tmp, _textproc); | |
4376 WinSetWindowPtr(tmp, QWP_USER, blah); | |
4332 dw_window_set_font(tmp, DefaultFont); | 4377 dw_window_set_font(tmp, DefaultFont); |
4333 dw_window_set_color(tmp, DW_CLR_BLACK, DW_CLR_PALEGRAY); | 4378 dw_window_set_color(tmp, DW_CLR_BLACK, DW_CLR_PALEGRAY); |
4334 return tmp; | 4379 return tmp; |
4335 } | 4380 } |
4336 | 4381 |