summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2006-10-15 23:47:34 +0300
committerDaniel Stone <daniels@endtroducing.fooishbar.org>2006-10-15 23:47:34 +0300
commita484ba15277e66e7ef9b21b238dcbf760695bc63 (patch)
tree47f3688df58bdbb25d53bb4c3de9155042b104b3
parentad355fecee3965be576596aeed5da54d776edf1d (diff)
XkbCopyKeymap: copy server vmods, and name atoms
Copy server->vmods, and all the atoms in names.
-rw-r--r--xkb/xkbUtils.c16
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)