"Peter Riocreux" par+wine_patches@silistix.com wrote:
The comment above SWP_DoOwnedPopups in dlls/x11drv/winpos.c suggests that the only thing missing is what I *might* have fixed here, therefore the patch also removes the FIXME and the WARN. It compiles and doesn't break any behaviour I can test, but I am only guessing whether I have done the right thing.
You have to write a test case and add it to existing ones in dlls/user/tests/win.c to confirm that the patch is correct.
"Dmitry Timoshkov" dmitry@baikal.ru writes:
You have to write a test case and add it to existing ones in dlls/user/tests/win.c to confirm that the patch is correct.
Is something that creates a tree of windows and then makes a parent invisible and checks the visibility state of the children sufficient? Or does it need some manual user confirmation that they have disappeared - that may be handled by a more fundamental test I suppose.
Peter
"Peter Riocreux" par+wine_devel@silistix.com wrote:
You have to write a test case and add it to existing ones in dlls/user/tests/win.c to confirm that the patch is correct.
Is something that creates a tree of windows and then makes a parent invisible and checks the visibility state of the children sufficient?
Yes, that should be sufficient. You have to test WS_VISIBLE style of children, IsWindowVisible check is not enough. I think that your patch is wrong.
"Dmitry Timoshkov" dmitry@baikal.ru writes:
"Peter Riocreux" par+wine_devel@silistix.com wrote:
You have to write a test case and add it to existing ones in dlls/user/tests/win.c to confirm that the patch is correct.
Is something that creates a tree of windows and then makes a parent invisible and checks the visibility state of the children sufficient?
Yes, that should be sufficient. You have to test WS_VISIBLE style of children, IsWindowVisible check is not enough. I think that your patch is wrong.
It is indeed, but I am not knowledgable enough about the order things get done to fix it simply. I wrote a test along the lines I guessed and the hiding works but the unhiding doesn't, even when I explicitly add a SWP_SHOWWINDOW flag and try both checking WS_VISIBLE property and IsWindowVisible. I put some printf's in and it always things the window is hidden when it calls the function. Is the SWP_DoOwnedPopups being called before the state of the parent is updated? Should a ShowOwnedPopups call be made after the window state is updated?
Thinking further, I wonder whether there ought to be anything to do with visibility in that function - which seems to be mainly concerned with the stacking of windows - or if the visibility ought to be managed from ShowWindow/HideWindow.
I am somewhat lost!
Peter k