diff -rbu2 ../microwindows-0.89pre8.orig/src/config ./src/config
--- ../microwindows-0.89pre8.orig/src/config	Fri Dec 21 14:07:18 2001
+++ ./src/config	Fri Dec 21 14:14:37 2001
@@ -47,7 +47,7 @@
 #
 ####################################################################
-OPTIMIZE                 = Y
-DEBUG                    = N
-VERBOSE                  = N
+OPTIMIZE                 = N
+DEBUG                    = Y
+VERBOSE                  = Y
 
 ####################################################################
@@ -191,5 +191,5 @@
 #
 ####################################################################
-ERASEMOVE                = Y
+ERASEMOVE                = N
 UPDATEREGIONS            = Y
 
@@ -216,5 +216,5 @@
 
 # X Window screen, mouse and kbd drivers
-X11                      = N
+X11                      = Y
 
 ifeq ($(X11), Y)
diff -rbu2 ../microwindows-0.89pre8.orig/src/mwin/winevent.c ./src/mwin/winevent.c
--- ../microwindows-0.89pre8.orig/src/mwin/winevent.c	Fri Dec 21 14:07:21 2001
+++ ./src/mwin/winevent.c	Fri Dec 21 14:10:59 2001
@@ -167,5 +167,5 @@
 
 	/* then possibly send user mouse message*/
-	if(hittest == HTCLIENT) {
+	if(hittest == HTCLIENT || hwnd == GetCapture()) {
 		pt.x = cursorx;
 		pt.y = cursory;
Only in ./src/mwin: winevent.c~
diff -rbu2 ../microwindows-0.89pre8.orig/src/mwin/winuser.c ./src/mwin/winuser.c
--- ../microwindows-0.89pre8.orig/src/mwin/winuser.c	Fri Dec 21 14:07:21 2001
+++ ./src/mwin/winuser.c	Fri Dec 21 14:10:59 2001
@@ -137,7 +137,11 @@
 }
 
+/*
+ * A helper function for sharing code between PeekMessage and GetMessage
+ */
+
 BOOL WINAPI
-PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
-	UINT wRemoveMsg)
+PeekMessageHelper(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
+	UINT wRemoveMsg, BOOL returnIfEmptyQueue)
 {
 	HWND	wp;
@@ -146,4 +150,8 @@
 	/* check if no messages in queue*/
 	if(mwMsgHead.head == NULL) {
+                /* Added by JACS so it doesn't reach MwSelect */
+                if (returnIfEmptyQueue)
+                    return FALSE;
+
 #if PAINTONCE
 		/* check all windows for pending paint messages*/
@@ -177,4 +185,12 @@
 
 BOOL WINAPI
+PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
+	UINT wRemoveMsg)
+{
+        /* Never wait in MwSelect: pass TRUE */
+        return PeekMessageHelper(lpMsg, hwnd, uMsgFilterMin, uMsgFilterMax, wRemoveMsg, TRUE);
+}
+
+BOOL WINAPI
 GetMessage(LPMSG lpMsg,HWND hwnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
 {
@@ -183,5 +199,6 @@
 	 * so this code will work
 	 */
-	while(!PeekMessage(lpMsg, hwnd, wMsgFilterMin, wMsgFilterMax,PM_REMOVE))
+        /* Always wait in MwSelect if there are messages: pass FALSE */
+	while(!PeekMessageHelper(lpMsg, hwnd, wMsgFilterMin, wMsgFilterMax,PM_REMOVE, FALSE))
 		continue;
 	return lpMsg->message != WM_QUIT;