Mercurial > dwindows
diff 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 |
line wrap: on
line diff
--- a/os2/dw.c Tue Mar 23 20:30:12 2004 +0000 +++ b/os2/dw.c Tue Mar 23 20:50:41 2004 +0000 @@ -1438,8 +1438,8 @@ { PFNWP *blah = WinQueryWindowPtr(hWnd, QWP_USER); - if(msg == WM_MOUSEMOVE) - return _wndproc(hWnd, msg, mp1, mp2); + if(msg == WM_MOUSEMOVE && _wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); if(blah && *blah) { @@ -1484,6 +1484,24 @@ return WinDefWindowProc(hWnd, msg, mp1, mp2); } +/* This procedure handles pointer changes */ +MRESULT EXPENTRY _textproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) +{ + PFNWP *blah = WinQueryWindowPtr(hWnd, QWP_USER); + + if(msg == WM_MOUSEMOVE &&_wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + + if(blah && *blah) + { + PFNWP myfunc = *blah; + + return myfunc(hWnd, msg, mp1, mp2); + } + + return WinDefWindowProc(hWnd, msg, mp1, mp2); +} + void _click_default(HWND handle) { char tmpbuf[100]; @@ -1680,7 +1698,9 @@ } break; case WM_MOUSEMOVE: - return _wndproc(hWnd, msg, mp1, mp2); + if(_wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; } if(oldproc) @@ -1697,7 +1717,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hWnd, msg, mp1, mp2); + if(_wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_CONTEXTMENU: case WM_COMMAND: return _entryproc(hWnd, msg, mp1, mp2); @@ -1748,7 +1770,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hWnd, msg, mp1, mp2); + if(_wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_CONTEXTMENU: case WM_COMMAND: return _entryproc(hWnd, msg, mp1, mp2); @@ -1795,7 +1819,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hWnd, msg, mp1, mp2); + if(_wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_SIZE: WinPostMsg(hWnd, WM_USER+7, 0, 0); break; @@ -1824,7 +1850,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hWnd, msg, mp1, mp2); + if(_wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_CHAR: if(SHORT1FROMMP(mp2) == '\t') { @@ -2514,7 +2542,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hWnd, msg, mp1, mp2); + if(_wndproc(hWnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_VSCROLL: case WM_HSCROLL: if(_run_event(hWnd, msg, mp1, mp2)) @@ -2677,6 +2707,7 @@ (pointer = (HPOINTER)dw_window_get_data(_toplevel_window(hWnd), "_dw_pointer"))) { WinSetPointer(HWND_DESKTOP, pointer); + return MRFROMSHORT(TRUE); } } return MRFROMSHORT(FALSE); @@ -3029,7 +3060,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hwnd, msg, mp1, mp2); + if(_wndproc(hwnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_PAINT: return _button_draw(hwnd, msg, mp1, mp2, oldproc, 0); case BM_SETHILITE: @@ -3241,7 +3274,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hwnd, msg, mp1, mp2); + if(_wndproc(hwnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_BUTTON1DOWN: case WM_BUTTON2DOWN: case WM_BUTTON3DOWN: @@ -3264,7 +3299,9 @@ switch(msg) { case WM_MOUSEMOVE: - return _wndproc(hwnd, msg, mp1, mp2); + if(_wndproc(hwnd, msg, mp1, mp2)) + return MPFROMSHORT(FALSE); + break; case WM_PAINT: { HPS hps; @@ -3856,10 +3893,15 @@ WinQuerySysPointer(HWND_DESKTOP, pointertype, FALSE) : (HPOINTER)pointertype; - WinSetPointer(HWND_DESKTOP, pointer); - - if(handle != HWND_DESKTOP) - dw_window_set_data(handle, "_dw_pointer", (void *)pointer); + if(!pointertype) + dw_window_set_data(handle, "_dw_pointer", 0); + else + { + WinSetPointer(HWND_DESKTOP, pointer); + + if(handle != HWND_DESKTOP) + dw_window_set_data(handle, "_dw_pointer", (void *)pointer); + } } /* @@ -4319,6 +4361,7 @@ */ HWND API dw_text_new(char *text, ULONG id) { + WindowData *blah = calloc(sizeof(WindowData), 1); HWND tmp = WinCreateWindow(HWND_OBJECT, WC_STATIC, text, @@ -4329,6 +4372,8 @@ id, NULL, NULL); + blah->oldproc = WinSubclassWindow(tmp, _textproc); + WinSetWindowPtr(tmp, QWP_USER, blah); dw_window_set_font(tmp, DefaultFont); dw_window_set_color(tmp, DW_CLR_BLACK, DW_CLR_PALEGRAY); return tmp;