xi: Implement grab support for new gesture event types
This commit is contained in:
parent
b544a1fdb8
commit
080bac39c8
|
@ -2427,8 +2427,8 @@ GrabWindow(ClientPtr client, DeviceIntPtr dev, int type,
|
||||||
|
|
||||||
/* Touch grab */
|
/* Touch grab */
|
||||||
int
|
int
|
||||||
GrabTouch(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr mod_dev,
|
GrabTouchOrGesture(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr mod_dev,
|
||||||
GrabParameters *param, GrabMask *mask)
|
int type, GrabParameters *param, GrabMask *mask)
|
||||||
{
|
{
|
||||||
WindowPtr pWin;
|
WindowPtr pWin;
|
||||||
GrabPtr grab;
|
GrabPtr grab;
|
||||||
|
@ -2446,7 +2446,7 @@ GrabTouch(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr mod_dev,
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
grab = CreateGrab(client->index, dev, mod_dev, pWin, XI2,
|
grab = CreateGrab(client->index, dev, mod_dev, pWin, XI2,
|
||||||
mask, param, XI_TouchBegin, 0, NullWindow, NullCursor);
|
mask, param, type, 0, NullWindow, NullCursor);
|
||||||
if (!grab)
|
if (!grab)
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
|
|
||||||
|
|
|
@ -114,14 +114,18 @@ ProcXIPassiveGrabDevice(ClientPtr client)
|
||||||
stuff->grab_type != XIGrabtypeKeycode &&
|
stuff->grab_type != XIGrabtypeKeycode &&
|
||||||
stuff->grab_type != XIGrabtypeEnter &&
|
stuff->grab_type != XIGrabtypeEnter &&
|
||||||
stuff->grab_type != XIGrabtypeFocusIn &&
|
stuff->grab_type != XIGrabtypeFocusIn &&
|
||||||
stuff->grab_type != XIGrabtypeTouchBegin) {
|
stuff->grab_type != XIGrabtypeTouchBegin &&
|
||||||
|
stuff->grab_type != XIGrabtypeGesturePinchBegin &&
|
||||||
|
stuff->grab_type != XIGrabtypeGestureSwipeBegin) {
|
||||||
client->errorValue = stuff->grab_type;
|
client->errorValue = stuff->grab_type;
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((stuff->grab_type == XIGrabtypeEnter ||
|
if ((stuff->grab_type == XIGrabtypeEnter ||
|
||||||
stuff->grab_type == XIGrabtypeFocusIn ||
|
stuff->grab_type == XIGrabtypeFocusIn ||
|
||||||
stuff->grab_type == XIGrabtypeTouchBegin) && stuff->detail != 0) {
|
stuff->grab_type == XIGrabtypeTouchBegin ||
|
||||||
|
stuff->grab_type == XIGrabtypeGesturePinchBegin ||
|
||||||
|
stuff->grab_type == XIGrabtypeGestureSwipeBegin) && stuff->detail != 0) {
|
||||||
client->errorValue = stuff->detail;
|
client->errorValue = stuff->detail;
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
|
@ -217,7 +221,16 @@ ProcXIPassiveGrabDevice(ClientPtr client)
|
||||||
status = GrabWindow(client, dev, stuff->grab_type, ¶m, &mask);
|
status = GrabWindow(client, dev, stuff->grab_type, ¶m, &mask);
|
||||||
break;
|
break;
|
||||||
case XIGrabtypeTouchBegin:
|
case XIGrabtypeTouchBegin:
|
||||||
status = GrabTouch(client, dev, mod_dev, ¶m, &mask);
|
status = GrabTouchOrGesture(client, dev, mod_dev, XI_TouchBegin,
|
||||||
|
¶m, &mask);
|
||||||
|
break;
|
||||||
|
case XIGrabtypeGesturePinchBegin:
|
||||||
|
status = GrabTouchOrGesture(client, dev, mod_dev,
|
||||||
|
XI_GesturePinchBegin, ¶m, &mask);
|
||||||
|
break;
|
||||||
|
case XIGrabtypeGestureSwipeBegin:
|
||||||
|
status = GrabTouchOrGesture(client, dev, mod_dev,
|
||||||
|
XI_GestureSwipeBegin, ¶m, &mask);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,7 +320,9 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
|
||||||
stuff->grab_type != XIGrabtypeKeycode &&
|
stuff->grab_type != XIGrabtypeKeycode &&
|
||||||
stuff->grab_type != XIGrabtypeEnter &&
|
stuff->grab_type != XIGrabtypeEnter &&
|
||||||
stuff->grab_type != XIGrabtypeFocusIn &&
|
stuff->grab_type != XIGrabtypeFocusIn &&
|
||||||
stuff->grab_type != XIGrabtypeTouchBegin) {
|
stuff->grab_type != XIGrabtypeTouchBegin &&
|
||||||
|
stuff->grab_type != XIGrabtypeGesturePinchBegin &&
|
||||||
|
stuff->grab_type != XIGrabtypeGestureSwipeBegin) {
|
||||||
client->errorValue = stuff->grab_type;
|
client->errorValue = stuff->grab_type;
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
|
@ -348,6 +363,12 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
|
||||||
case XIGrabtypeTouchBegin:
|
case XIGrabtypeTouchBegin:
|
||||||
tempGrab->type = XI_TouchBegin;
|
tempGrab->type = XI_TouchBegin;
|
||||||
break;
|
break;
|
||||||
|
case XIGrabtypeGesturePinchBegin:
|
||||||
|
tempGrab->type = XI_GesturePinchBegin;
|
||||||
|
break;
|
||||||
|
case XIGrabtypeGestureSwipeBegin:
|
||||||
|
tempGrab->type = XI_GestureSwipeBegin;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
tempGrab->grabtype = XI2;
|
tempGrab->grabtype = XI2;
|
||||||
tempGrab->modifierDevice = mod_dev;
|
tempGrab->modifierDevice = mod_dev;
|
||||||
|
|
|
@ -716,3 +716,10 @@ GrabIsKeyboardGrab(GrabPtr grab)
|
||||||
return (grab->type == KeyPress ||
|
return (grab->type == KeyPress ||
|
||||||
grab->type == DeviceKeyPress || grab->type == XI_KeyPress);
|
grab->type == DeviceKeyPress || grab->type == XI_KeyPress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bool
|
||||||
|
GrabIsGestureGrab(GrabPtr grab)
|
||||||
|
{
|
||||||
|
return (grab->type == XI_GesturePinchBegin ||
|
||||||
|
grab->type == XI_GestureSwipeBegin);
|
||||||
|
}
|
||||||
|
|
|
@ -61,4 +61,5 @@ extern _X_EXPORT Bool DeletePassiveGrabFromList(GrabPtr /* pMinuendGrab */ );
|
||||||
|
|
||||||
extern Bool GrabIsPointerGrab(GrabPtr grab);
|
extern Bool GrabIsPointerGrab(GrabPtr grab);
|
||||||
extern Bool GrabIsKeyboardGrab(GrabPtr grab);
|
extern Bool GrabIsKeyboardGrab(GrabPtr grab);
|
||||||
|
extern Bool GrabIsGestureGrab(GrabPtr grab);
|
||||||
#endif /* DIXGRABS_H */
|
#endif /* DIXGRABS_H */
|
||||||
|
|
|
@ -192,11 +192,12 @@ extern int
|
||||||
GrabMask * /* eventMask */ );
|
GrabMask * /* eventMask */ );
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
GrabTouch(ClientPtr /* client */ ,
|
GrabTouchOrGesture(ClientPtr /* client */ ,
|
||||||
DeviceIntPtr /* dev */ ,
|
DeviceIntPtr /* dev */ ,
|
||||||
DeviceIntPtr /* mod_dev */ ,
|
DeviceIntPtr /* mod_dev */ ,
|
||||||
GrabParameters * /* param */ ,
|
int /* type */ ,
|
||||||
GrabMask * /* eventMask */ );
|
GrabParameters * /* param */ ,
|
||||||
|
GrabMask * /* eventMask */ );
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
SelectForWindow(DeviceIntPtr /* dev */ ,
|
SelectForWindow(DeviceIntPtr /* dev */ ,
|
||||||
|
|
Loading…
Reference in New Issue