diff options
author | Daniel Stone <daniel@fooishbar.org> | 2006-10-15 23:47:34 +0300 |
---|---|---|
committer | Daniel Stone <daniels@endtroducing.fooishbar.org> | 2006-10-15 23:47:34 +0300 |
commit | a484ba15277e66e7ef9b21b238dcbf760695bc63 (patch) | |
tree | 47f3688df58bdbb25d53bb4c3de9155042b104b3 | |
parent | ad355fecee3965be576596aeed5da54d776edf1d (diff) |
XkbCopyKeymap: copy server vmods, and name atoms
Copy server->vmods, and all the atoms in names.
-rw-r--r-- | xkb/xkbUtils.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index c8044c726..cddeb9e83 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -1294,6 +1294,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) } } + memcpy(dst->server->vmods, src->server->vmods, XkbNumVirtualMods); + if (src->server->vmodmap) { if (src->max_key_code != dst->max_key_code) { if (dst->server->vmodmap) @@ -1427,6 +1429,20 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) xfree(dst->names->radio_groups); } dst->names->num_rg = src->names->num_rg; + + dst->names->keycodes = src->names->keycodes; + dst->names->geometry = src->names->geometry; + dst->names->symbols = src->names->symbols; + dst->names->types = src->names->types; + dst->names->compat = src->names->compat; + dst->names->phys_symbols = src->names->phys_symbols; + + memcpy(dst->names->vmods, src->names->vmods, + XkbNumVirtualMods * sizeof(Atom)); + memcpy(dst->names->indicators, src->names->indicators, + XkbNumIndicators * sizeof(Atom)); + memcpy(dst->names->groups, src->names->groups, + XkbNumKbdGroups * sizeof(Atom)); } else { if (dst->names) |