Harold Hunt wrote: > Jehan, > > That last message fired off before I was done... my Ctrl key is sticking so > when I hit Enter it sent a Ctrl+Enter, which sends the message. > > >>I don't think you need to manage the cursor in WM_ACTIVATEAPP, managing >>it in WM_ACTIVATE should be enough because, if I'm not wrong, XWin will >>always receive a WM_ACTIVATE with a WM_ACTIVATEAPP. > > > Then again, your version gets trapped in a state where the cursor is shown, > whereas I haven't seen that problem with Test57 yet :)
Actually, I'm now using Test57, and I haven't seen my problem either. And I was not saying that this was related to my problem, I'm just saying that it looks like unecessary code. > I remember spending a *lot* of time reading the docs about WM_ACTIVATE and > WM_ACTIVATEAPP to figure out where to show and hide the cursor. There were > constant bug repots until I got it right, so I'm going to tend to believe > that the show/hide in WM_ACTIVATEAPP is required, until someone presents me > with some sample code and documentation exerpts that shows me that 1) > they've spent more time on the problem than I have and 2) that the show/hide > code in WM_ACTIVATEAPP is indeed not needed. But the code changed since and got simplified a lot, especially everything about hiding/showing the cursor the previous screen and all that stuff is gone. So maybe the bug has been flushed with the code :). But that's true that it doesn't cost much to have it anyway and that you're the boss (^_^) By the way, here is another patch that should prevent some problems with multiroot systems (not tested). Jehan
--- hw/xwin.orig/winwndproc.c 2002-06-08 18:46:26.000000000 -0700 +++ hw/xwin/winwndproc.c 2002-06-09 13:47:32.000000000 -0700 @@ -418,20 +418,27 @@ #endif /* Hide or show the Windows mouse cursor */ - if ((LOWORD(wParam) == WA_ACTIVE - || LOWORD(wParam) == WA_CLICKACTIVE) - && fCursor) + if ((LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE)) { - /* Hide Windows cursor */ - fCursor = FALSE; - ShowCursor (FALSE); + if (fCursor) + { + /* Hide Windows cursor */ + fCursor = FALSE; + ShowCursor (FALSE); + } + + pScreenPriv->fActive = TRUE; } - else if (LOWORD(wParam) == WA_INACTIVE - && !fCursor) + else if (LOWORD(wParam) == WA_INACTIVE) { - /* Show Windows cursor */ - fCursor = TRUE; - ShowCursor (TRUE); + if (!fCursor) + { + /* Show Windows cursor */ + fCursor = TRUE; + ShowCursor (TRUE); + } + + pScreenPriv->fActive = FALSE; } return 0;