https://issues.apache.org/ooo/show_bug.cgi?id=123048

--- Comment #10 from Armin Le Grand <[email protected]> ---
ALG: What has changed is that the layout suppression in 3.4.1 was not working
for 3.4.1 due to the following line:

    if ( bEdgeTrackUserDefined && (GetModel() && GetModel()->isLocked()) )

This was adapted to

    if(bEdgeTrackUserDefined || !GetModel() || GetModel()->isLocked())

which works as designed, so ImpCalcEdgeTrack will never be used during load.
Problem is that the former error allowed values from the ItemSet to be set at
the EdgeTrack using ImpSetAttrToEdgeInfo; this is *never* done now before later
in SdrEdgeObj::ImpRecalcEdgeTrack() really

        *pEdgeTrack=ImpCalcEdgeTrack(*pEdgeTrack,aCon1,aCon2,&aEdgeInfo);
        ImpSetEdgeInfoToAttr();

is called. This *will* kill values which are in the ItemSet, but were vere
adapted/set at the EdgeInfo (in ImpSetEdgeInfoToAttr). To solve this, the
object needs to remember if ImpCalcEdgeTrack was ever suppressed, and if yes,
get to a valid state by calling ImpCalcEdgeTrack once and then
ImpSetAttrToEdgeInfo. After that, all will be as if layouting would have never
been suppressed at all.

Testing this theory...

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are watching all bug changes.

Reply via email to