Index: sw/source/core/layout/flylay.cxx =================================================================== --- sw/source/core/layout/flylay.cxx (revision 1349168) +++ sw/source/core/layout/flylay.cxx (working copy) @@ -666,14 +666,15 @@ SdrObject* pObj = pNew->GetVirtDrawObj(); ASSERT( pNew->GetAnchorFrm(), "Fly without Anchor" ); - const SwFlyFrm* pFly = pNew->GetAnchorFrm()->FindFlyFrm(); + SwFlyFrm* pFly = (SwFlyFrm*)pNew->GetAnchorFrm()->FindFlyFrm(); if ( pFly && pObj->GetOrdNum() < pFly->GetVirtDrawObj()->GetOrdNum() ) { - sal_uInt32 nNewNum = pFly->GetVirtDrawObj()->GetOrdNumDirect(); + //#i119945# set pFly's OrdNum to _rNewObj's. So when pFly is removed by Undo, the original OrdNum will not be changed. + sal_uInt32 nNewNum = pObj->GetOrdNumDirect(); if ( pObj->GetPage() ) - pObj->GetPage()->SetObjectOrdNum( pObj->GetOrdNumDirect(), nNewNum); + pObj->GetPage()->SetObjectOrdNum( pFly->GetVirtDrawObj()->GetOrdNumDirect(), nNewNum ); else - pObj->SetOrdNum( nNewNum ); + pFly->GetVirtDrawObj()->SetOrdNum( nNewNum ); } //Flys die im Cntnt sitzen beachten wir nicht weiter. @@ -936,16 +937,17 @@ } ASSERT( _rNewObj.GetAnchorFrm(), "anchored draw object without anchor" ); - const SwFlyFrm* pFlyFrm = _rNewObj.GetAnchorFrm()->FindFlyFrm(); + SwFlyFrm* pFlyFrm = (SwFlyFrm*)_rNewObj.GetAnchorFrm()->FindFlyFrm(); if ( pFlyFrm && _rNewObj.GetDrawObj()->GetOrdNum() < pFlyFrm->GetVirtDrawObj()->GetOrdNum() ) { - sal_uInt32 nNewNum = pFlyFrm->GetVirtDrawObj()->GetOrdNumDirect(); + //#i119945# set pFly's OrdNum to _rNewObj's. So when pFly is removed by Undo, the original OrdNum will not be changed. + sal_uInt32 nNewNum = _rNewObj.GetDrawObj()->GetOrdNumDirect(); if ( _rNewObj.GetDrawObj()->GetPage() ) _rNewObj.DrawObj()->GetPage()->SetObjectOrdNum( - _rNewObj.GetDrawObj()->GetOrdNumDirect(), nNewNum); - else - _rNewObj.DrawObj()->SetOrdNum( nNewNum ); + pFlyFrm->GetVirtDrawObj()->GetOrdNumDirect(), nNewNum); + else + pFlyFrm->GetVirtDrawObj()->SetOrdNum( nNewNum ); } if ( FLY_AS_CHAR == _rNewObj.GetFrmFmt().GetAnchor().GetAnchorId() ) Index: sw/source/core/layout/frmtool.cxx =================================================================== --- sw/source/core/layout/frmtool.cxx (revision 1349168) +++ sw/source/core/layout/frmtool.cxx (working copy) @@ -2804,9 +2804,10 @@ pObj->GetDrawObj()->GetOrdNum() < pFly->GetVirtDrawObj()->GetOrdNum() && pObj->GetDrawObj()->GetPage() ) { + //#i119945# set pFly's OrdNum to pObj's. So when pFly is removed by Undo, the original OrdNum will not be changed. pObj->DrawObj()->GetPage()->SetObjectOrdNum( - pObj->GetDrawObj()->GetOrdNumDirect(), - pFly->GetVirtDrawObj()->GetOrdNumDirect() + 1 ); + pFly->GetVirtDrawObj()->GetOrdNumDirect(), + pObj->GetDrawObj()->GetOrdNumDirect() ); } } }