From 5927e070b45fbe3fea4b394920ffd6f7d036f1ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkki=20Sepp=C3=A4l=C3=A4?= Date: Fri, 21 Jan 2011 15:56:22 +0200 Subject: [PATCH] xkb: Cancel a key's repetition when its autorepeat is disabled. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When XkbChangeEnabledControls is called to disable key repetition of a certain key (or keys), currently ongoing repetition of that key was not cancelled. It was cancelled if ChangeKeyboardControl was used to disable key repetition globally. Reviewed-by: Rami Ylimäki Reviewed-by: Dirk Wallenstein Signed-off-by: Peter Hutterer --- xkb/xkb.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xkb/xkb.c b/xkb/xkb.c index bbb1d9df8..6fd66c5e5 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -915,9 +915,14 @@ ProcXkbSetControls(ClientPtr client) stuff->axtOptsMask); } - if (stuff->changeCtrls & XkbPerKeyRepeatMask) + if (stuff->changeCtrls & XkbPerKeyRepeatMask) { memcpy(new.per_key_repeat, stuff->perKeyRepeat, XkbPerKeyBitArraySize); + if (xkbi->repeatKey && + !BitIsOn(new.per_key_repeat, xkbi->repeatKey)) { + AccessXCancelRepeatKey(xkbi, xkbi->repeatKey); + } + } old= *ctrl; *ctrl= new;