diff options
author | Keith Packard <keithp@keithp.com> | 2008-02-06 16:51:57 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2008-03-10 21:29:12 -0700 |
commit | b2657ec5981122e7cc0bda0d8802aec63cde9014 (patch) | |
tree | 8335fa8763f537f6441aa2a25be539d5ac56c27f | |
parent | ab9b0b36ac8ac72fc48c0abd91a83de49a18313c (diff) |
XkbCopyKeymap was mangling doodads and overlays
-rw-r--r-- | xkb/xkbUtils.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index b3132701d..a3ae655f0 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -1796,6 +1796,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) dsection = dst->geom->sections; i < src->geom->num_sections; i++, ssection++, dsection++) { + *dsection = *ssection; if (ssection->num_rows) { tmp = xcalloc(ssection->num_rows, sizeof(XkbRowRec)); if (!tmp) @@ -1830,6 +1831,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) dsection->doodads = NULL; } + dsection->sz_doodads = ssection->num_doodads; for (k = 0, sdoodad = ssection->doodads, ddoodad = dsection->doodads; @@ -1850,8 +1852,9 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies) } ddoodad->any.type = sdoodad->any.type; } - dsection->num_doodads = ssection->num_doodads; - dsection->sz_doodads = ssection->num_doodads; + dsection->overlays = NULL; + dsection->sz_overlays = 0; + dsection->num_overlays = 0; } } else { |