Hello again,
1) Yes i did testing on Windows-XP. I did it by putting together various examples and by checking with InSendMessage() for all cases. This clearly showed that WM_ACTIVATEAPP was always posted and never sent.
2) Yes, i tested with the msg.c test-cases. The patch does "break" some tests in it. Please read note below:
However, the test system for msg.c in user32 i severely broken. If i upgrade the test system, it will require lots of more changes to prevent even more test-cases from breaking.
The problem is in the ok_sequence_() function of the test system. It is missing a call to:
while(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessage(&msg);
This is needed to make sure that all messages are pulled from the queue before it starts comparing with the expected messages (especially for posted message - sent messages are always received).
I think is is also the reason why these tast-cases are a bit flaky. On machine the number of passed cases vary allot (because it ends up being timing dependent).
If i introduce this in this patch, i will either be flamed for destroying working test cases or for changing too much. The change (which i think needs to be done) breaks around 100 test cases (allot of small changes). Mostly because they now get all the messages which were previously stuck on the queue.
I think the missing line should be added in a patch by itself along with a fix for all the broken cases. Trying to blend it in with this patch will end up a mess.
/Pedro
On Thu, 2007-08-02 at 20:34 -0600, Vitaliy Margolen wrote:
Peter Dons Tychsen wrote:
Hello Wine.
On original Windows, the messages WM_ACTIVATEAPP are sent using PostMessage() and not SendMessage() like in the current Wine implementation.
I have thoroughly verified that this is the case on Windows-XP (that it uses PostMessage()).
This error can lead to fatal focusing problems, as some programs call more focus related functions when they receive this message. This leads to recursive calls into set_active_calls. It does not crash, but leads to unexpected results such as lost focus for mouse and keyboard.
This fixes the focus for the game "Wild Metal" if you switch focus from the game to the desktop, and then back again.
http://www.rockstargames.com/classics/
Cheers,
/Pedro
This patch makes 45 msg.c tests in user32 fail for me. Could you double check your findings? Also when you say "thoroughly verified" have you used Wine tests or your own program?
Vitaliy