Carlos Garnacho
eac32fb142
frame: disallow frame operations if the popup is open
...
If some device has a popped up menu, meta_frame_get_flags()
returns 0 to indicate other devices cannot trigger any
actions on the frame.
2011-08-02 18:39:33 +02:00
Carlos Garnacho
b93c72315d
ui: Add a MetaDevice arg to meta_window_menu_popup()
...
This will be the device popping up the menu, gtk_menu_popup()
uses the current GTK+ event device, and that might not even be
filled up with mutter event bypassing.
2011-08-02 18:39:33 +02:00
Carlos Garnacho
f84637d31e
window: Make MetaWindow keep a pointer to the popup menu
...
Multiple windows may now have different popup menus, responding
only to the device pair that popped it up.
2011-08-02 18:39:32 +02:00
Carlos Garnacho
48a88a33ef
ui: enable multidevice on frame windows
...
This is so different pointers may have different
cursors on them.
2011-07-27 00:33:10 +02:00
Carlos Garnacho
8847281c31
frames: Use the triggering device when updating controls
2011-07-27 00:33:10 +02:00
Carlos Garnacho
d05297593f
frames: Get coordinates from event
...
Don't spare a synchronous X call, instead translate
properly the XEvent coordinates in ui.c and use
the event coordinates in MetaFrames
2011-07-27 00:33:09 +02:00
Carlos Garnacho
a285b8ae44
meta: Add device.h
...
This is real proof noone tried the branch yet
2011-07-27 00:33:09 +02:00
Carlos Garnacho
e6ba5ec298
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-07-27 00:33:09 +02:00
Carlos Garnacho
f6d9b29ad0
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-07-27 00:33:09 +02:00
Carlos Garnacho
e6f0af9abc
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-07-19 20:55:05 +02:00
Carlos Garnacho
d32c726967
core: Fix rebase glitch
2011-07-18 12:39:04 +02:00
Carlos Garnacho
2c873990d1
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-07-15 18:03:47 +02:00
Carlos Garnacho
f15993f940
xi2: Workaround some bugs in XI2 passive grabs
...
XIAllMasterDevices doesn't quite work for key grabs, so only do
this at the moment for the Virtual Core Keyboard
2011-07-15 18:03:47 +02:00
Carlos Garnacho
d482dbcd16
display: Ignore events from slave devices
...
Mutter only handles master devices.
2011-07-15 18:03:47 +02:00
Carlos Garnacho
f5334dd6cf
compositor: use meta_device_grab() for pointer/keyboard grabs
...
These happen invariably on the VCP/VCK pair.
2011-07-15 18:03:47 +02:00
Carlos Garnacho
972a9d231f
screen: Use meta_device_pointer_set_window_cursor() for startup sequence.
...
At the moment feedback is only provided for the Virtual Core Pointer
2011-07-15 18:03:47 +02:00
Carlos Garnacho
1dd50cf006
device-map: Add meta_device_map_list_devices()
...
This function returns a list of the devices currently handled by
the device map.
2011-07-15 18:03:47 +02:00
Carlos Garnacho
855095ad1a
core: Make frame handle per-pointer cursors.
2011-07-15 18:03:46 +02:00
Carlos Garnacho
95b2e6fafc
workspace: use triggering device to focus the default window on workspace switch
2011-07-15 18:03:46 +02:00
Carlos Garnacho
dfcd079ec2
screen: make "monitor under pointer" logic work for several devices
2011-07-15 18:03:46 +02:00
Carlos Garnacho
e0966e7499
window: query the guessed pointer's modifiers on _NET_WM_MOVERESIZE
2011-07-15 18:03:46 +02:00
Carlos Garnacho
38df2715f2
display: Use the grab pointer for delayed window raising
2011-07-15 18:03:46 +02:00
Carlos Garnacho
5ecbb3ec3b
keybindings: use the right device for querying the modifier mask.
2011-07-15 18:03:46 +02:00
Carlos Garnacho
656fa71649
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-07-15 18:03:46 +02:00
Carlos Garnacho
bde0d28f1b
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-07-15 18:03:46 +02:00
Carlos Garnacho
4cb9a5e3bf
core: Add meta_device_keyboard_[gs]et_focus_window()
...
These functions are meant to replace X[GS]etInputFocus() calls across
the core.
2011-07-15 18:03:45 +02:00
Carlos Garnacho
90c25f0cfe
display: Use meta_device_grab() for pointer active grabs.
2011-07-15 18:03:45 +02:00
Carlos Garnacho
2484e8cd64
keybindings: Use meta_device_grab() for keyboard active grabs
2011-07-15 18:03:45 +02:00
Carlos Garnacho
61a7789c83
window: Use meta_device_pointer_warp()
2011-07-15 18:03:45 +02:00
Carlos Garnacho
c352e1078e
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-07-15 18:00:01 +02:00
Carlos Garnacho
d664579115
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-07-15 17:58:49 +02:00
Carlos Garnacho
49dfb40b82
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-07-15 17:58:49 +02:00
Carlos Garnacho
e08c4756eb
keybindings: Replace XGrabKey() with meta_device_map_grab_key()
2011-07-15 17:58:49 +02:00
Carlos Garnacho
6378527458
display: Replace XGrabButton with meta_device_map_grab_button()
2011-07-15 17:58:49 +02:00
Carlos Garnacho
f0705e142c
core: Add XInput2 device map implementation
2011-07-15 17:58:49 +02:00
Carlos Garnacho
3f7193e558
Replace XAllowEvents with meta_device_allow_events()
2011-07-15 17:58:48 +02:00
Carlos Garnacho
3af9de08ab
Use meta_core_select_events() for input events
2011-07-15 17:58:48 +02:00
Carlos Garnacho
111c23a6e0
core: Add method to select events on a window
...
This function handles XInput2 vs core in input events.
2011-07-15 17:58:48 +02:00
Carlos Garnacho
db6ddc4a7f
devices-xi2: Export function to translate event mask
2011-07-15 17:58:48 +02:00
Carlos Garnacho
884e13474b
Add XInput2 input devices implementation
2011-07-15 17:58:45 +02:00
Carlos Garnacho
722420df3a
input-events: Add method to get the device for an event
2011-07-15 17:57:24 +02:00
Carlos Garnacho
50cee11c53
core: Add device map object
...
It will contain the input devices available
2011-07-15 17:57:24 +02:00
Carlos Garnacho
a727114ac2
core: Add core devices implementation
2011-07-15 17:57:24 +02:00
Carlos Garnacho
722d2d6472
device: Add methods to pair devices
2011-07-15 17:57:24 +02:00
Carlos Garnacho
7b9a26fbd8
Add pointer/keyboard abstract classes
2011-07-15 17:57:24 +02:00
Carlos Garnacho
5819e74c22
compositor: Use helper functions for input events
2011-07-15 17:57:24 +02:00
Carlos Garnacho
36e237cf1e
keybindings: Use input event helper functions
2011-07-15 17:57:24 +02:00
Carlos Garnacho
3b0aa9f881
window: use input event helper functions on notify_focus()
2011-07-15 17:57:23 +02:00
Carlos Garnacho
e6d09c9d0b
window: use input event helper functions in grab operations.
2011-07-15 17:57:23 +02:00
Carlos Garnacho
e26bf9dcef
display: get crossing/focus events details via helper functions
2011-07-11 19:00:46 +02:00