Ok, I've been digging this stuff for more then a week now. And I still don't have even a partial understanding of what's going on in there. If someone please explain me these: 1. Where wine stops and passing over to X/window manager? I'm most interested in handling focus changes, minimize/maximize/restore. 2. What are we doing about properly implementing minimize/maximize/restore.
Here is what I uncovered so far about SetWindowPos: 1. Wine does not send WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED. 2. Wine does not redraw owner/owned windows (or not in a proper order) when z-order changes.
It looks like these heavily depend on focus changes and owner/owned windows relations. Some times native redraws both owner and owned windows. Sometimes none at all. Same goes for messages.
I'm kind of stuck here. To go any further I need to know what part should we delegate to WM and what part do ourselves.