summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xkb/xkb.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/xkb/xkb.c b/xkb/xkb.c
index d4830b9a9..7a17db6ce 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -821,9 +821,11 @@ ProcXkbSetControls(ClientPtr client)
if (stuff->changeCtrls&XkbPerKeyRepeatMask) {
memcpy(new.per_key_repeat,stuff->perKeyRepeat,XkbPerKeyBitArraySize);
}
+
old= *ctrl;
*ctrl= new;
XkbDDXChangeControls(dev,&old,ctrl);
+
if (XkbComputeControlsNotify(dev,&old,ctrl,&cn,False)) {
cn.keycode= 0;
cn.eventType = 0;
@@ -831,15 +833,16 @@ ProcXkbSetControls(ClientPtr client)
cn.requestMinor = X_kbSetControls;
XkbSendControlsNotify(dev,&cn);
}
+
if ((sli= XkbFindSrvLedInfo(dev,XkbDfltXIClass,XkbDfltXIId,0))!=NULL)
XkbUpdateIndicators(dev,sli->usesControls,True,NULL,&cause);
-#ifndef NO_CLEAR_LATCHES_FOR_STICKY_KEYS_OFF
+
/* If sticky keys were disabled, clear all locks and latches */
if ((old.enabled_ctrls&XkbStickyKeysMask)&&
(!(ctrl->enabled_ctrls&XkbStickyKeysMask))) {
XkbClearAllLatchesAndLocks(dev,xkbi,True,&cause);
}
-#endif
+
return client->noClientException;
}