# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1080075041 0 # Node ID 79696a852401ca1d9f9c7071cdbaa42d6502464c # Parent 27533e1ccaf544f029de68cbb757b96ba110c4e6 Added DW_POINTER_DEFAULT, this will return the pointer to the default system state and no longer override the window's cursors. diff -r 27533e1ccaf5 -r 79696a852401 dw.h --- a/dw.h Tue Mar 23 20:30:12 2004 +0000 +++ b/dw.h Tue Mar 23 20:50:41 2004 +0000 @@ -144,6 +144,7 @@ #define DW_MLE_CASESENSITIVE MLFSEARCH_CASESENSITIVE +#define DW_POINTER_DEFAULT 0 #define DW_POINTER_ARROW SPTR_ARROW #define DW_POINTER_CLOCK SPTR_WAIT @@ -316,6 +317,7 @@ #define DW_MLE_CASESENSITIVE MLFSEARCH_CASESENSITIVE +#define DW_POINTER_DEFAULT 0 #define DW_POINTER_ARROW 0 #define DW_POINTER_CLOCK watchCursor @@ -403,6 +405,7 @@ #define DW_MLE_CASESENSITIVE 1 +#define DW_POINTER_DEFAULT 0 #define DW_POINTER_ARROW 32512 #define DW_POINTER_CLOCK 32514 diff -r 27533e1ccaf5 -r 79696a852401 dwtest.c --- a/dwtest.c Tue Mar 23 20:30:12 2004 +0000 +++ b/dwtest.c Tue Mar 23 20:50:41 2004 +0000 @@ -292,7 +292,7 @@ else { dw_window_set_text((HWND)cursortogglebutton,"Set Cursor pointer - CLOCK"); - dw_window_set_pointer((HWND)data,DW_POINTER_ARROW); + dw_window_set_pointer((HWND)data,DW_POINTER_DEFAULT); cursor_arrow = 1; } return FALSE; diff -r 27533e1ccaf5 -r 79696a852401 os2/dw.c --- 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; diff -r 27533e1ccaf5 -r 79696a852401 win/dw.c --- a/win/dw.c Tue Mar 23 20:30:12 2004 +0000 +++ b/win/dw.c Tue Mar 23 20:50:41 2004 +0000 @@ -3763,8 +3763,13 @@ { HCURSOR cursor = pointertype < 65536 ? LoadCursor(NULL, MAKEINTRESOURCE(pointertype)) : (HCURSOR)pointertype; - dw_window_set_data(handle, "_dw_cursor", (void *)cursor); - SetCursor(cursor); + if(!pointertype) + dw_window_set_data(handle, "_dw_cursor", 0); + else + { + dw_window_set_data(handle, "_dw_cursor", (void *)cursor); + SetCursor(cursor); + } } /*