diff options
author | marha <marha@users.sourceforge.net> | 2013-01-22 14:27:38 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-01-22 14:27:38 +0100 |
commit | 7002c66cfba01e7d3b88dae498a195f78f0e83f5 (patch) | |
tree | 2fbbd202a6a4243f0e64a8b22e22417a609ae19d /xorg-server/xkb/xkbUtils.c | |
parent | 50c07563e17397daf040a32d8fdd3ab397e72371 (diff) | |
parent | 470f7ca9f0be348faf2f03fc16811844c5eeffce (diff) | |
download | vcxsrv-7002c66cfba01e7d3b88dae498a195f78f0e83f5.tar.gz vcxsrv-7002c66cfba01e7d3b88dae498a195f78f0e83f5.tar.bz2 vcxsrv-7002c66cfba01e7d3b88dae498a195f78f0e83f5.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
fontconfig libfontenc mesa mkfontscale pixman xserver xkeyboard-config
Conflicts:
mesalib/src/mesa/main/syncobj.c
mesalib/src/mesa/main/syncobj.h
xorg-server/hw/xwin/winconfig.c
xorg-server/hw/xwin/winmultiwindowwndproc.c
Diffstat (limited to 'xorg-server/xkb/xkbUtils.c')
-rw-r--r-- | xorg-server/xkb/xkbUtils.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/xorg-server/xkb/xkbUtils.c b/xorg-server/xkb/xkbUtils.c index c23cd7784..6c6af60f0 100644 --- a/xorg-server/xkb/xkbUtils.c +++ b/xorg-server/xkb/xkbUtils.c @@ -642,6 +642,7 @@ XkbComputeCompatState(XkbSrvInfoPtr xkbi) CARD16 grp_mask; XkbStatePtr state = &xkbi->state; XkbCompatMapPtr map; + XkbControlsPtr ctrls; if (!state || !xkbi->desc || !xkbi->desc->ctrls || !xkbi->desc->compat) return; @@ -650,9 +651,14 @@ XkbComputeCompatState(XkbSrvInfoPtr xkbi) grp_mask = map->groups[state->group].mask; state->compat_state = state->mods | grp_mask; state->compat_lookup_mods = state->lookup_mods | grp_mask; + ctrls= xkbi->desc->ctrls; - if (xkbi->desc->ctrls->enabled_ctrls & XkbIgnoreGroupLockMask) - grp_mask = map->groups[state->base_group].mask; + if (ctrls->enabled_ctrls & XkbIgnoreGroupLockMask) { + unsigned char grp = state->base_group+state->latched_group; + if (grp >= ctrls->num_groups) + grp = XkbAdjustGroup(XkbCharToInt(grp), ctrls); + grp_mask = map->groups[grp].mask; + } state->compat_grab_mods = state->grab_mods | grp_mask; return; } |