diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-10-04 11:41:17 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-10-13 11:34:43 +1000 |
commit | 401150d7dcad08be7c1f07e076f810cd61e2105c (patch) | |
tree | f832b93a1a259d457cc864169172518f6c70d72b /include | |
parent | 6bd0eff40fae1e5d8fed28751851eb5b932d131b (diff) |
input: change pointer screen crossing behaviour for multiple ScreenRecs
miPointerSetPosition traditionally took coordinates on a per-screen basis,
triggering a screen switch when these went out-of-bounds. For absolute
devices, this prevented screen crossing in the negative x/y direction.
This patch changes the event generation patch to handle screen coordinates
in a desktop range (i.e. all screens together). Screen switches are
triggered when these coordinates are not on the current screen.
This unifies the pointer behaviour of single ScreenRec multihead and
multiple ScreenRecs multihead in that the cursor by default moves about the
whole screen rather than be confined to one single screen. The
transformation matrix may then be used to actually confine the cursor to the
screen again.
Note: fill_pointer_events has to deal with several different coordinate
systems. Make sure you read the comment before trying to understand the code.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/inputstr.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/inputstr.h b/include/inputstr.h index 9d4108ef5..1238f930b 100644 --- a/include/inputstr.h +++ b/include/inputstr.h @@ -534,8 +534,9 @@ typedef struct _DeviceIntRec { DeviceIntPtr lastSlave; /* last slave device used */ /* last valuator values recorded, not posted to client; - * for slave devices, valuators is in device coordinates - * for master devices, valuators is in screen coordinates + * for slave devices, valuators is in device coordinates, mapped to the + * desktop + * for master devices, valuators is in desktop coordinates. * see dix/getevents.c * remainder supports acceleration */ |