summaryrefslogtreecommitdiffstats
path: root/libwpd
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2012-12-18 15:24:28 +0100
committerDavid Tardon <dtardon@redhat.com>2012-12-19 08:03:35 +0100
commit7fec8dfcaca4efc92516f9af51a3157f1a11ccd7 (patch)
treedcbfddc0f4eac654c43055333cab6b3879d8533c /libwpd
parentRevert "fdo#58399 - revert attempts to untangle and accelerate this mess." (diff)
downloadcore-7fec8dfcaca4efc92516f9af51a3157f1a11ccd7.tar.gz
core-7fec8dfcaca4efc92516f9af51a3157f1a11ccd7.zip
fdo#56267, fdo#56980 propagate shape change to subclasses
It turns out (as witnessed by fdo#56267) that my fix for fdo#56980 only cured the symptom, not the cause. The real problem is caused by the following sequence of events during ODF import: 1) an SvxCustomShape object is created (XShape iface) 2) an SdrObjCustomShape object is created for the SvxCustomShape, but it is not associated with it (yet) 3) another SvxCustomShape object is created internally by the SdrObjCustomShape and they are associated 4) an EnhancedCustomShapeEngine is created for this SvxCustomShape by SdrObjCustomShape 5) the SvxCustomShape from point 1 is set to the SdrObjCustomShape At some point (I did not follow this explicitly) the SvxCustomShape cached by the EnhancedCustomShapeEngine loses its (weak) reference to the SdrObjCustomShape. This leaves it gutted and all subsequent calls to render() return an empty XShape. The solution is simple: let SdrObjCustomShape know that the associated UNO shape has changed, so it can drop the custom shape engine. Change-Id: I267838ea4857dfcd646f40c811f3ae572237a1e6
Diffstat (limited to 'libwpd')
0 files changed, 0 insertions, 0 deletions