[Bug 2593] New: Mouse wheel's WM_MOUSEWHEEL requires screen, not client, coordinates
Wine Bugs
wine-bugs at winehq.org
Fri Dec 3 17:38:51 CST 2004
http://bugs.winehq.org/show_bug.cgi?id=2593
Summary: Mouse wheel's WM_MOUSEWHEEL requires screen, not client,
coordinates
Product: Wine
Version: 20041201
Platform: HP
URL: http://www.ssontech.com
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: wine-x11driver
AssignedTo: wine-bugs at winehq.org
ReportedBy: matchmovie at yahoo.com
CC: matchmovie at yahoo.com
The WM_MOUSEWHEEL message is specified to have absolute screen coordinates,
unlike the WM_LBUTTONDOWN etc messages, which are client coordinate system.
x11drv/mouse.c and windows/input.c treat them all identically (client). So
WM_MOUSEWHEEL messages are delivered to the correct window (and appear to work),
but have the wrong coordinates, so programs that use the coordinates to
redistibute the MOUSEWHEEL message (ie to override the focus) wind up delivering
the MOUSEWHEEL messages to grossly incorrect windows, so much so that the mouse
scroll is unusable. The SynthEyes program at www.ssontech.com shows this
clearly, you can find multiple images of the overall screen-wide scroll wheel
mapping within each subwindow, because the MOUSEWHEEL coordinates are being sent
in client coordinates, not screen coordinates.
This problem should be fixable with a slight modification to mouse.c::get_coords
to allow the client rectangle mapping to be turned off for WM_MOUSEWHEEL. I'm
not entirely sure what the story is with the two mappings in the routine without
running a debugger on it, or I'd propose a patch. (Sorry, no experience to be
able to do this.)
For future note, I think the mapping to client coordinates for the LBUTTONDOWN
etc messages should actually be in windows\input.c::queue_mouse_event with no
mapping in get_coords. The hardware message between the two is intended to
always pass screen coordinates in screen-normalized coordinates, not to be
normalizing the client-coordinate values as is currently done.
But that's a fine point for now, the key point is to fix this bug so SynthEyes
can be run under Linux... tnx.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the wine-bugs
mailing list