https://bugs.winehq.org/show_bug.cgi?id=38791
Bug ID: 38791 Summary: In server/queue.c, clipping cursor to empty rectangle is off by one pixel (affects "The Long Dark") Product: Wine Version: 1.7.45 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wineserver Assignee: wine-bugs@winehq.org Reporter: buhr@asaurus.net Distribution: ---
Created attachment 51716 --> https://bugs.winehq.org/attachment.cgi?id=51716 Patch to clip empty rectangles to top left pixel
In server/queue.c functions set_clip_rectangle() and queue_hardware_message(), the cursor position is clipped to the rectangle desktop->cursor.clip. However, if the clipping rectangle has zero width and height, the cursor position is set to a position offset by (-1,-1) from the top-left corner of the rectangle instead of *at* the top-left corner. An empty clipping rectangle is arguably invalid, but at least one application relies on the cursor being clipped to the top-left:
The game "The Long Dark" (Steam, Sandbox Alpha v.244) uses such an empty clipping rectangle while the character is moving. Because of this bug, mouse events (including button press and release events with no movement) cause a shifting of the view down and to the right.
The attached patch fixes the issue.