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