XkbCopyKeymap was mangling doodads and overlays
This commit is contained in:
parent
ab9b0b36ac
commit
b2657ec598
|
@ -1796,6 +1796,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||||
dsection = dst->geom->sections;
|
dsection = dst->geom->sections;
|
||||||
i < src->geom->num_sections;
|
i < src->geom->num_sections;
|
||||||
i++, ssection++, dsection++) {
|
i++, ssection++, dsection++) {
|
||||||
|
*dsection = *ssection;
|
||||||
if (ssection->num_rows) {
|
if (ssection->num_rows) {
|
||||||
tmp = xcalloc(ssection->num_rows, sizeof(XkbRowRec));
|
tmp = xcalloc(ssection->num_rows, sizeof(XkbRowRec));
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
|
@ -1830,6 +1831,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||||
dsection->doodads = NULL;
|
dsection->doodads = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dsection->sz_doodads = ssection->num_doodads;
|
||||||
for (k = 0,
|
for (k = 0,
|
||||||
sdoodad = ssection->doodads,
|
sdoodad = ssection->doodads,
|
||||||
ddoodad = dsection->doodads;
|
ddoodad = dsection->doodads;
|
||||||
|
@ -1850,8 +1852,9 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||||
}
|
}
|
||||||
ddoodad->any.type = sdoodad->any.type;
|
ddoodad->any.type = sdoodad->any.type;
|
||||||
}
|
}
|
||||||
dsection->num_doodads = ssection->num_doodads;
|
dsection->overlays = NULL;
|
||||||
dsection->sz_doodads = ssection->num_doodads;
|
dsection->sz_overlays = 0;
|
||||||
|
dsection->num_overlays = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in New Issue