summaryrefslogtreecommitdiff
path: root/xkb/xkbUtils.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2008-02-06 16:51:57 -0800
committerKeith Packard <keithp@keithp.com>2008-03-10 21:29:12 -0700
commitb2657ec5981122e7cc0bda0d8802aec63cde9014 (patch)
tree8335fa8763f537f6441aa2a25be539d5ac56c27f /xkb/xkbUtils.c
parentab9b0b36ac8ac72fc48c0abd91a83de49a18313c (diff)
XkbCopyKeymap was mangling doodads and overlays
Diffstat (limited to 'xkb/xkbUtils.c')
-rw-r--r--xkb/xkbUtils.c7
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 {