[PATCH] user32: Allow WM_CAPTURECHANGE indicating SetCapture() parameter.

Christopher Thielen cthielen at gmail.com
Fri Jan 15 21:41:46 CST 2016


Thanks Ken!

You're right that I'm only concerned with missing WM_CAPTURECHANGED 
messages from SetCapture() calls, so I won't attempt to patch the Mac 
driver code.

On 01/13/2016 09:43 AM, Ken Thomases wrote:
> On Jan 12, 2016, at 10:27 PM, Christopher Thielen <cthielen at 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
>



More information about the wine-devel mailing list