From a484ba15277e66e7ef9b21b238dcbf760695bc63 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Sun, 15 Oct 2006 23:47:34 +0300 Subject: [PATCH] XkbCopyKeymap: copy server vmods, and name atoms Copy server->vmods, and all the atoms in names. --- xkb/xkbUtils.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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)