aboutsummaryrefslogtreecommitdiff
path: root/src/draglock.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/draglock.c')
-rw-r--r--src/draglock.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/draglock.c b/src/draglock.c
index 90809c9..86142b6 100644
--- a/src/draglock.c
+++ b/src/draglock.c
@@ -257,7 +257,8 @@ EvdevDragLockInitProperty(DeviceIntPtr dev)
* i.e. to set bt 3 to draglock button 1, supply 0,0,1
*/
int
-EvdevDragLockSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val)
+EvdevDragLockSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val,
+ BOOL checkonly)
{
InputInfoPtr pInfo = dev->public.devicePrivate;
EvdevPtr pEvdev = pInfo->private;
@@ -287,8 +288,11 @@ EvdevDragLockSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val)
if (meta > EVDEV_MAXBUTTONS)
return BadValue;
- pEvdev->dragLock.meta = meta;
- memset(pEvdev->dragLock.lock_pair, 0, sizeof(pEvdev->dragLock.lock_pair));
+ if (!checkonly)
+ {
+ pEvdev->dragLock.meta = meta;
+ memset(pEvdev->dragLock.lock_pair, 0, sizeof(pEvdev->dragLock.lock_pair));
+ }
} else
{
CARD8* vals = (CARD8*)val->data;
@@ -297,11 +301,14 @@ EvdevDragLockSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val)
if (vals[i] > EVDEV_MAXBUTTONS)
return BadValue;
- pEvdev->dragLock.meta = 0;
- memset(pEvdev->dragLock.lock_pair, 0, sizeof(pEvdev->dragLock.lock_pair));
+ if (!checkonly)
+ {
+ pEvdev->dragLock.meta = 0;
+ memset(pEvdev->dragLock.lock_pair, 0, sizeof(pEvdev->dragLock.lock_pair));
- for (i = 0; i < val->size && i < EVDEV_MAXBUTTONS; i++)
- pEvdev->dragLock.lock_pair[i] = vals[i];
+ for (i = 0; i < val->size && i < EVDEV_MAXBUTTONS; i++)
+ pEvdev->dragLock.lock_pair[i] = vals[i];
+ }
}
}