Carlos Garnacho
84b9d5c9f9
display: Make focus info persistent
...
It must not be freed (at least meanwhile the device pair
exists), so ensure it's kept around, and we don't create
info for a same keyboard twice.
2011-10-30 18:22:17 +01:00
Carlos Garnacho
8e3b9be79c
window: make guess_grab_pointer() more reliable
...
Now either the current focus keyboard or the client pointer
(i.e. the pointer paired to the last keyboard that had the
window focus) are used to guess the pointer that should be
grabbed.
2011-10-30 18:22:17 +01:00
Carlos Garnacho
74520ab20b
window: set the corresponding client pointer on focused windows.
...
The client window determines the device pair that is used for
core protocol calls such as XQueryPointer(), so different
clients using the core protocol can be focused by different
devices simultaneously.
2011-10-30 18:22:17 +01:00
Carlos Garnacho
40c2b0c5bb
core: Fix rebase glitch
2011-10-30 18:22:16 +01:00
Carlos Garnacho
40ec37eed0
core: enable XInput2 by default
...
This is nothing but the beginning, things work with a single
pointer/keyboard pair, but will be largely broken with multiple
devices interacting simultaneously, so we first need a policy
to establish a sensible behavior for extra pointer/keyboard
pairs.
the MUTTER_USE_CORE_DEVICES envvar has been added to force use
of Xlib core events for devices in order to check for regressions.
2011-10-30 18:22:16 +01:00
Carlos Garnacho
4e6e40de87
display: Ignore events from slave devices
...
Mutter only handles master devices.
2011-10-30 18:21:12 +01:00
Carlos Garnacho
319208f859
compositor: use meta_device_grab() for pointer/keyboard grabs
...
These happen invariably on the VCP/VCK pair.
2011-10-30 18:21:12 +01:00
Carlos Garnacho
f670a4f348
screen: Use meta_device_pointer_set_window_cursor() for startup sequence.
...
At the moment feedback is only provided for the Virtual Core Pointer
2011-10-30 18:21:12 +01:00
Carlos Garnacho
57dff10ab5
device-map: Add meta_device_map_list_devices()
...
This function returns a list of the devices currently handled by
the device map.
2011-10-30 18:21:12 +01:00
Carlos Garnacho
53bd0c70c9
core: Make frame handle per-pointer cursors.
2011-10-30 18:21:12 +01:00
Carlos Garnacho
2507d20bb7
workspace: use triggering device to focus the default window on workspace switch
2011-10-30 18:21:12 +01:00
Carlos Garnacho
7d5e7ec3e6
screen: make "monitor under pointer" logic work for several devices
2011-10-30 18:21:12 +01:00
Carlos Garnacho
0b8848057b
window: query the guessed pointer's modifiers on _NET_WM_MOVERESIZE
2011-10-30 18:20:29 +01:00
Carlos Garnacho
0b841f8940
display: Use the grab pointer for delayed window raising
2011-10-30 18:20:29 +01:00
Carlos Garnacho
61b120d08c
keybindings: use the right device for querying the modifier mask.
2011-10-30 18:20:29 +01:00
Carlos Garnacho
2aa39eb4fd
devices: make meta_device_pointer_query_position() return a boolean
...
like in XQueryPointer/XIQueryPointer, the return value tells whether
the pointer device is on the same screen than the passed window.
2011-10-30 18:20:29 +01:00
Carlos Garnacho
dc5b813608
core: Make keyboard focus handling happen per-keyboard
...
MetaFocusInfo is a struct holding all necessary info, code has
been updated to use the per-keyboard focus info instead of the
old fields.
2011-10-30 18:20:29 +01:00
Carlos Garnacho
df044a0035
core: Add meta_device_keyboard_[gs]et_focus_window()
...
These functions are meant to replace X[GS]etInputFocus() calls across
the core.
2011-10-30 18:19:51 +01:00
Carlos Garnacho
154730a3d9
display: Use meta_device_grab() for pointer active grabs.
2011-10-30 18:19:51 +01:00
Carlos Garnacho
557ed7ac0b
keybindings: Use meta_device_grab() for keyboard active grabs
2011-10-30 18:19:51 +01:00
Carlos Garnacho
bce2bc0568
window: Use meta_device_pointer_warp()
2011-10-30 18:19:51 +01:00
Carlos Garnacho
7c86cb85ba
core: Keep track of per pointer/keyboard grabs
...
There is now a MetaGrabInfo struct, holding all information about
an ongoing grab, there were unfortunately no means of making this
commit smaller, as things are too intertwined to separate it,
On places where it was most obvious, the correct device has been
used (in reaction to events, for example), in other parts, the
private API has been extended to include the MetaDevice (or device
ID for core.h functions), in other places, the virtual core
pointer/keyboard are used out of cluelessness.
2011-10-30 18:19:51 +01:00
Carlos Garnacho
ab58d87142
ui: Use input-events.h to translate XEvents to GdkEvents
...
This is the only use in the UI part of core functions not
exported via core.h, but this is sort of a hack within a hack,
and still better than doing the XInput2 vs core dance again.
2011-10-30 18:19:51 +01:00
Carlos Garnacho
e62076f055
devices: Make MetaDevice/MetaDeviceMap partly public
...
MetaDevice is quite limited outside of the core, mostly useful
to represent a device, and get the paired one.
2011-10-30 18:18:50 +01:00
Carlos Garnacho
1e8f10826a
keybindings: Replace XGrabKey() with meta_device_map_grab_key()
2011-10-30 18:18:50 +01:00
Carlos Garnacho
cca79a77da
display: Replace XGrabButton with meta_device_map_grab_button()
2011-10-30 18:18:50 +01:00
Carlos Garnacho
67018d2d04
core: Add XInput2 device map implementation
2011-10-30 18:18:49 +01:00
Carlos Garnacho
199395a395
Replace XAllowEvents with meta_device_allow_events()
2011-10-30 18:18:49 +01:00
Carlos Garnacho
ad911d6cce
Use meta_core_select_events() for input events
2011-10-30 18:18:49 +01:00
Carlos Garnacho
daeaf44e02
core: Add method to select events on a window
...
This function handles XInput2 vs core in input events.
2011-10-30 18:18:49 +01:00
Carlos Garnacho
ec587190e8
devices-xi2: Export function to translate event mask
2011-10-30 18:18:49 +01:00
Carlos Garnacho
22a44bf007
Add XInput2 input devices implementation
2011-10-30 18:18:49 +01:00
Carlos Garnacho
e1679cb35b
input-events: Add method to get the device for an event
2011-10-30 18:18:49 +01:00
Carlos Garnacho
5da2ff0f4e
core: Add device map object
...
It will contain the input devices available
2011-10-30 18:18:49 +01:00
Carlos Garnacho
a547596be4
core: Add core devices implementation
2011-10-30 18:18:49 +01:00
Carlos Garnacho
bb7d549136
device: Add methods to pair devices
2011-10-30 18:18:49 +01:00
Carlos Garnacho
e800da2bca
Add pointer/keyboard abstract classes
2011-10-30 18:18:48 +01:00
Carlos Garnacho
3def650a93
compositor: Use helper functions for input events
2011-10-30 18:18:48 +01:00
Carlos Garnacho
48f59d88fa
keybindings: Use input event helper functions
2011-10-30 18:18:48 +01:00
Carlos Garnacho
01e77bae9d
window: use input event helper functions on notify_focus()
2011-10-30 18:18:48 +01:00
Carlos Garnacho
66e9720cb7
window: use input event helper functions in grab operations.
2011-10-30 18:18:48 +01:00
Carlos Garnacho
3a8837f8ab
display: get crossing/focus events details via helper functions
2011-10-30 18:18:48 +01:00
Carlos Garnacho
cc4f66bc8a
display: get button event coordinates with the helper functions
2011-10-30 18:18:48 +01:00
Carlos Garnacho
90287cb3f6
display: get button events state from helper functions
2011-10-30 18:18:47 +01:00
Carlos Garnacho
0c317e8ced
display: get button number from helper input event function
2011-10-30 18:18:47 +01:00
Carlos Garnacho
33c829ee39
display: Use helper function to get input events' timestamp
2011-10-30 18:18:47 +01:00
Carlos Garnacho
e92757ac8b
display: Use helper functions for getting window/root in input events
2011-10-30 18:18:47 +01:00
Carlos Garnacho
08f06ba012
display: Get the right window/time for input events
2011-10-30 18:18:47 +01:00
Carlos Garnacho
e49cbb3614
display: separate input/non-input events handling in the event callback
...
We now use meta_input_event_get_type() to discern input events from the
others. This commit has involved plenty of indenting changes, so it's
better seen with git diff -b.
2011-10-30 18:18:47 +01:00
Carlos Garnacho
98e95ed5e8
core: Add helper code to handle input events
...
These will be used with every input event out there so they're
dealt with uniformly.
2011-10-30 18:18:47 +01:00