diff -rbu2 microwin.orig/src/mwin/winevent.c microwin/src/mwin/winevent.c --- microwin.orig/src/mwin/winevent.c Sun Nov 26 04:57:52 2000 +++ microwin/src/mwin/winevent.c Thu Jul 5 17:08:35 2001 @@ -166,5 +166,5 @@ /* then possibly send user mouse message*/ - if(hittest == HTCLIENT) { + if(hittest == HTCLIENT || hwnd == GetCapture()) { pt.x = cursorx; pt.y = cursory; diff -rbu2 microwin.orig/src/mwin/winuser.c microwin/src/mwin/winuser.c --- microwin.orig/src/mwin/winuser.c Wed Jul 5 01:36:42 2000 +++ microwin/src/mwin/winuser.c Mon Jul 2 13:11:51 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;