summaryrefslogtreecommitdiff
path: root/xkb/xkbActions.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-09-08 16:30:36 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-09-13 10:30:14 +1000
commit4da59f478686fa7e80a3837bf9fa61672c13c50b (patch)
tree33b6fea26b7b52869c981a881b754b6fa1ead3f9 /xkb/xkbActions.c
parent8fb3fa28a5a1b36cdaad38055a607400828b9e1c (diff)
xkb: split effectiveGroup calculation into separate utility function.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'xkb/xkbActions.c')
-rw-r--r--xkb/xkbActions.c29
1 files changed, 5 insertions, 24 deletions
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index 9c3184a83..b0ab427b6 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -124,30 +124,11 @@ static XkbAction fake;
}
pActs= XkbKeyActionsPtr(xkb,key);
col= 0;
- effectiveGroup= xkbState->group;
- if (effectiveGroup!=XkbGroup1Index) {
- if (XkbKeyNumGroups(xkb,key)>(unsigned)1) {
- if (effectiveGroup>=XkbKeyNumGroups(xkb,key)) {
- unsigned gi= XkbKeyGroupInfo(xkb,key);
- switch (XkbOutOfRangeGroupAction(gi)) {
- default:
- case XkbWrapIntoRange:
- effectiveGroup %= XkbKeyNumGroups(xkb,key);
- break;
- case XkbClampIntoRange:
- effectiveGroup = XkbKeyNumGroups(xkb,key)-1;
- break;
- case XkbRedirectIntoRange:
- effectiveGroup= XkbOutOfRangeGroupInfo(gi);
- if (effectiveGroup>=XkbKeyNumGroups(xkb,key))
- effectiveGroup= 0;
- break;
- }
- }
- }
- else effectiveGroup= XkbGroup1Index;
- col+= (effectiveGroup*XkbKeyGroupsWidth(xkb,key));
- }
+
+ effectiveGroup = XkbGetEffectiveGroup(xkbi, xkbState, key);
+ if (effectiveGroup != XkbGroup1Index)
+ col += (effectiveGroup * XkbKeyGroupsWidth(xkb, key));
+
type= XkbKeyKeyType(xkb,key,effectiveGroup);
if (type->map!=NULL) {
register unsigned i,mods;