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:
Peter Hutterer
2007-06-19 11:28:07 +09:30
parent 3e894974cd
commit 9e257029c7
4 changed files with 94 additions and 9 deletions

View File

@@ -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;