changeset 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 1e60e98a9168
files dw.h dwtest.c os2/dw.c win/dw.c
diffstat 4 files changed, 71 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- 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
 
--- 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;
--- 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;
--- 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);
+	}
 }
 
 /*