On Jan 12, 2016, at 10:27 PM, Christopher Thielen cthielen@gmail.com wrote:
Attached is my analysis of Wine's usage of WM_CAPTURECHANGED as requested by Alexandre.
Reading the code has revealed the same logic change I originally proposed -- allowing a WM_CAPTURECHANGED message to be sent to a window losing focus if it was also the window gaining focus -- is needed in the Mac driver as well. The Mac driver logic looks copied out of dlls/user32/input.c.
dlls/winemac.drv/window.c: SendMessageW(previous, WM_CAPTURECHANGED, 0, (LPARAM)hwnd);
Appears to be in need of the same patch as I'm suggesting. Any idea why this code appears duplicated? Something about OS X having a different window server than *nix?
The duplication is to enforce Mac-appropriate window moving behaviors, like preventing the user from dragging a window's title bar behind the Mac menu bar.
I don't think your change is needed here, although I also don't think it would hurt anything. The code in the Mac driver is only called during a window move. It is not used when a program calls SetCapture(), which I understand is the case you're interested in.
-Ken