- Nov 03, 2012
-
-
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.
-
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.
-
Multiple windows may now have different popup menus, responding only to the device pair that popped it up.
-
This is so different pointers may have different cursors on them.
-
-
Don't spare a synchronous X call, instead translate properly the XEvent coordinates in ui.c and use the event coordinates in MetaFrames
-
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.
-
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.
-
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.
-
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.
-
XIAllMasterDevices doesn't quite work for key grabs, so only do this at the moment for the Virtual Core Keyboard
-
Mutter only handles master devices.
-
These happen invariably on the VCP/VCK pair.
-
At the moment feedback is only provided for the Virtual Core Pointer
-
This function returns a list of the devices currently handled by the device map.
-
-
-
-
-
-
-
like in XQueryPointer/XIQueryPointer, the return value tells whether the pointer device is on the same screen than the passed window.
-
Jasper St. Pierre authored
-
MetaFocusInfo is a struct holding all necessary info, code has been updated to use the per-keyboard focus info instead of the old fields.
-
These functions are meant to replace X[GS]etInputFocus() calls across the core.
-
-
-
-
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.
-
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.
-
MetaDevice is quite limited outside of the core, mostly useful to represent a device, and get the paired one.
-
-
-
-
-
-
This function handles XInput2 vs core in input events.
-
-
-
-