Xi: split some grab parameter checking out of GrabButton and GrabKey.
This commit is contained in:
parent
98a1fa9941
commit
e8e26f700c
|
@ -1349,18 +1349,10 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static int
|
||||||
GrabButton(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
|
CheckGrabValues(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
|
||||||
BYTE other_devices_mode, CARD16 modifiers,
|
BYTE other_devices_mode, CARD16 modifiers, BOOL ownerEvents)
|
||||||
DeviceIntPtr modifier_device, CARD8 button, Window grabWindow,
|
|
||||||
BOOL ownerEvents, Cursor rcursor, Window rconfineTo, Mask eventMask)
|
|
||||||
{
|
{
|
||||||
WindowPtr pWin, confineTo;
|
|
||||||
CursorPtr cursor;
|
|
||||||
GrabPtr grab;
|
|
||||||
Mask access_mode = DixGrabAccess;
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
if ((this_device_mode != GrabModeSync) &&
|
if ((this_device_mode != GrabModeSync) &&
|
||||||
(this_device_mode != GrabModeAsync)) {
|
(this_device_mode != GrabModeAsync)) {
|
||||||
client->errorValue = this_device_mode;
|
client->errorValue = this_device_mode;
|
||||||
|
@ -1379,7 +1371,23 @@ GrabButton(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
|
||||||
client->errorValue = ownerEvents;
|
client->errorValue = ownerEvents;
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
rc = dixLookupWindow(&pWin, grabWindow, client, DixSetAttrAccess);
|
return Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
GrabButton(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
|
||||||
|
BYTE other_devices_mode, CARD16 modifiers,
|
||||||
|
DeviceIntPtr modifier_device, CARD8 button, Window grabWindow,
|
||||||
|
BOOL ownerEvents, Cursor rcursor, Window rconfineTo, Mask eventMask)
|
||||||
|
{
|
||||||
|
WindowPtr pWin, confineTo;
|
||||||
|
CursorPtr cursor;
|
||||||
|
GrabPtr grab;
|
||||||
|
int rc;
|
||||||
|
Mask access_mode = DixGrabAccess;
|
||||||
|
|
||||||
|
rc = CheckGrabValues(client, dev, this_device_mode, other_devices_mode,
|
||||||
|
modifiers, ownerEvents);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
return rc;
|
return rc;
|
||||||
if (rconfineTo == None)
|
if (rconfineTo == None)
|
||||||
|
@ -1406,6 +1414,10 @@ GrabButton(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
|
||||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, access_mode);
|
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, access_mode);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
return rc;
|
return rc;
|
||||||
|
rc = dixLookupWindow(&pWin, grabWindow, client, DixSetAttrAccess);
|
||||||
|
if (rc != Success)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
|
||||||
grab = CreateGrab(client->index, dev, pWin, eventMask,
|
grab = CreateGrab(client->index, dev, pWin, eventMask,
|
||||||
(Bool) ownerEvents, (Bool) this_device_mode,
|
(Bool) ownerEvents, (Bool) this_device_mode,
|
||||||
|
@ -1428,32 +1440,18 @@ GrabKey(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
|
||||||
Mask access_mode = DixGrabAccess;
|
Mask access_mode = DixGrabAccess;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
rc = CheckGrabValues(client, dev, this_device_mode, other_devices_mode,
|
||||||
|
modifiers, ownerEvents);
|
||||||
|
if (rc != Success)
|
||||||
|
return rc;
|
||||||
if (k == NULL)
|
if (k == NULL)
|
||||||
return BadMatch;
|
return BadMatch;
|
||||||
if ((other_devices_mode != GrabModeSync) &&
|
|
||||||
(other_devices_mode != GrabModeAsync)) {
|
|
||||||
client->errorValue = other_devices_mode;
|
|
||||||
return BadValue;
|
|
||||||
}
|
|
||||||
if ((this_device_mode != GrabModeSync) &&
|
|
||||||
(this_device_mode != GrabModeAsync)) {
|
|
||||||
client->errorValue = this_device_mode;
|
|
||||||
return BadValue;
|
|
||||||
}
|
|
||||||
if ((key > k->xkbInfo->desc->max_key_code ||
|
if ((key > k->xkbInfo->desc->max_key_code ||
|
||||||
key < k->xkbInfo->desc->min_key_code)
|
key < k->xkbInfo->desc->min_key_code)
|
||||||
&& (key != AnyKey)) {
|
&& (key != AnyKey)) {
|
||||||
client->errorValue = key;
|
client->errorValue = key;
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
if ((modifiers != AnyModifier) && (modifiers & ~AllModifiersMask)) {
|
|
||||||
client->errorValue = modifiers;
|
|
||||||
return BadValue;
|
|
||||||
}
|
|
||||||
if ((ownerEvents != xTrue) && (ownerEvents != xFalse)) {
|
|
||||||
client->errorValue = ownerEvents;
|
|
||||||
return BadValue;
|
|
||||||
}
|
|
||||||
rc = dixLookupWindow(&pWin, grabWindow, client, DixSetAttrAccess);
|
rc = dixLookupWindow(&pWin, grabWindow, client, DixSetAttrAccess);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
Loading…
Reference in New Issue