changeset 529:82a203664aa9

Fixed dw_window_set_pointer() for OS/2.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 23 Mar 2004 20:12:31 +0000
parents d78f476c40f5
children 27533e1ccaf5
files os2/dw.c
diffstat 1 files changed, 31 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/os2/dw.c	Tue Mar 23 19:34:33 2004 +0000
+++ b/os2/dw.c	Tue Mar 23 20:12:31 2004 +0000
@@ -33,6 +33,7 @@
 #define QWP_USER 0
 
 MRESULT EXPENTRY _run_event(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2);
+MRESULT EXPENTRY _wndproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2);
 void _do_resize(Box *thisbox, int x, int y);
 void _handle_splitbar_resize(HWND hwnd, float percent, int type, int x, int y);
 int _load_bitmap_file(char *file, HWND handle, HBITMAP *hbm, HDC *hdc, HPS *hps, unsigned long *width, unsigned long *height);
@@ -1437,6 +1438,9 @@
 {
 	PFNWP *blah = WinQueryWindowPtr(hWnd, QWP_USER);
 
+	if(msg == WM_MOUSEMOVE)
+	   return _wndproc(hWnd, msg, mp1, mp2);
+
 	if(blah && *blah)
 	{
 		PFNWP myfunc = *blah;
@@ -1675,6 +1679,8 @@
 			WinSendMsg(hWnd, SLM_SETSLIDERINFO, MPFROM2SHORT(SMA_SLIDERARMPOSITION, SMA_INCREMENTVALUE), (MPARAM)pos);
 		}
 		break;
+	case WM_MOUSEMOVE:
+		return _wndproc(hWnd, msg, mp1, mp2);
 	}
 
 	if(oldproc)
@@ -1690,6 +1696,8 @@
 
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hWnd, msg, mp1, mp2);
 	case WM_CONTEXTMENU:
 	case WM_COMMAND:
 		return _entryproc(hWnd, msg, mp1, mp2);
@@ -1739,6 +1747,8 @@
 
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hWnd, msg, mp1, mp2);
 	case WM_CONTEXTMENU:
 	case WM_COMMAND:
 		return _entryproc(hWnd, msg, mp1, mp2);
@@ -1784,6 +1794,8 @@
 
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hWnd, msg, mp1, mp2);
 	case WM_SIZE:
 		WinPostMsg(hWnd, WM_USER+7, 0, 0);
 		break;
@@ -1811,6 +1823,8 @@
 
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hWnd, msg, mp1, mp2);
 	case WM_CHAR:
 		if(SHORT1FROMMP(mp2) == '\t')
 		{
@@ -2499,6 +2513,8 @@
 
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hWnd, msg, mp1, mp2);
 	case WM_VSCROLL:
 	case WM_HSCROLL:
 		if(_run_event(hWnd, msg, mp1, mp2))
@@ -2655,12 +2671,15 @@
 		break;
 	case WM_MOUSEMOVE:
 		{
-			HPOINTER ptr = (HPOINTER)dw_window_get_data(hWnd, "_dw_pointer");
-
-			if(ptr)
-				WinSetPointer(HWND_DESKTOP, ptr);
-		}
-		break;
+			HPOINTER pointer;
+
+			if((pointer = (HPOINTER)dw_window_get_data(hWnd, "_dw_pointer")) ||
+			   (pointer = (HPOINTER)dw_window_get_data(_toplevel_window(hWnd), "_dw_pointer")))
+			{
+				WinSetPointer(HWND_DESKTOP, pointer);
+			}
+		}
+		return MRFROMSHORT(FALSE);
 	case WM_USER:
 		windowfunc = (void (* API)(void *))mp1;
 
@@ -3009,6 +3028,8 @@
 
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hwnd, msg, mp1, mp2);
 	case WM_PAINT:
 		return _button_draw(hwnd, msg, mp1, mp2, oldproc, 0);
 	case BM_SETHILITE:
@@ -3219,6 +3240,8 @@
 	res = (int)_run_event(hwnd, msg, mp1, mp2);
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hwnd, msg, mp1, mp2);
 	case WM_BUTTON1DOWN:
 	case WM_BUTTON2DOWN:
 	case WM_BUTTON3DOWN:
@@ -3240,6 +3263,8 @@
 
 	switch(msg)
 	{
+	case WM_MOUSEMOVE:
+		return _wndproc(hwnd, msg, mp1, mp2);
 	case WM_PAINT:
 		{
 			HPS hps;