mirror of
https://github.com/X11Libre/xserver.git
synced 2026-09-22 20:35:43 +00:00
Add implicitGrab field to GrabInfoRec.
Is set when passive grab is implicit as result of a ButtonPress event. If this is the case, we need to store the XI mask as well as the core mask to ensure delivery of XI events during the grab's lifetime. Remove all core grabs on other devices when client issues a GrabPointer or GrabKeyboard request. Let's assume that the client really only wants one device to interact, so this seems like a reasonable solution.
This commit is contained in:
parent
3e894974cd
commit
9e257029c7
4 changed files with 94 additions and 9 deletions
|
|
@ -494,6 +494,10 @@ extern int GrabDevice(
|
|||
CARD8 * /* status */,
|
||||
Bool /* coreGrab */);
|
||||
|
||||
extern void RemoveOtherCoreGrabs(
|
||||
ClientPtr /* client */,
|
||||
DeviceIntPtr /* dev */);
|
||||
|
||||
extern void InitEvents(void);
|
||||
extern void InitSprite(
|
||||
DeviceIntPtr /* pDev */,
|
||||
|
|
|
|||
|
|
@ -333,9 +333,11 @@ typedef struct {
|
|||
#define FROZEN_NO_EVENT 5
|
||||
#define FROZEN_WITH_EVENT 6
|
||||
#define THAW_OTHERS 7
|
||||
|
||||
typedef struct _GrabInfoRec {
|
||||
TimeStamp grabTime;
|
||||
Bool fromPassiveGrab;
|
||||
TimeStamp grabTime;
|
||||
Bool fromPassiveGrab; /* true if from passive grab */
|
||||
Bool implicitGrab; /* implicit from ButtonPress */
|
||||
GrabRec activeGrab;
|
||||
GrabPtr grab;
|
||||
CARD8 activatingKey;
|
||||
|
|
|
|||
Loading…
Reference in a new issue