diff options
Diffstat (limited to 'sw/source/core/txtnode')
-rw-r--r-- | sw/source/core/txtnode/ndtxt.cxx | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 0c1d094304b8..615f2712d2a1 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -839,6 +839,8 @@ void SwTxtNode::Update( { if ( bNegative ) { + std::vector<SwTxtInputFld*> aTxtInputFlds; + const sal_Int32 nChangeEnd = nChangePos + nChangeLen; for ( sal_uInt16 n = 0; n < m_pSwpHints->Count(); ++n ) { @@ -881,12 +883,18 @@ void SwTxtNode::Update( { SwTxtInputFld* pTxtInputFld = dynamic_cast<SwTxtInputFld*>(pHint); if ( pTxtInputFld ) - { - pTxtInputFld->UpdateFieldContent(); - } + aTxtInputFlds.push_back(pTxtInputFld); } } + //wait until all the attribute positions are correct + //before updating the field contents + for (std::vector<SwTxtInputFld*>::iterator aI = aTxtInputFlds.begin(); aI != aTxtInputFlds.end(); ++aI) + { + SwTxtInputFld* pTxtInputFld = *aI; + pTxtInputFld->UpdateFieldContent(); + } + m_pSwpHints->MergePortions( *this ); } else @@ -896,6 +904,7 @@ void SwTxtNode::Update( bool bMergePortionsNeeded = false; const sal_uInt16 coArrSz = static_cast<sal_uInt16>(RES_TXTATR_WITHEND_END) - static_cast<sal_uInt16>(RES_CHRATR_BEGIN); + std::vector<SwTxtInputFld*> aTxtInputFlds; bool aDontExp[ coArrSz ]; memset( &aDontExp, 0, coArrSz * sizeof(bool) ); @@ -993,11 +1002,18 @@ void SwTxtNode::Update( { SwTxtInputFld* pTxtInputFld = dynamic_cast<SwTxtInputFld*>(pHint); if ( pTxtInputFld ) - { - pTxtInputFld->UpdateFieldContent(); - } + aTxtInputFlds.push_back(pTxtInputFld); } } + + //wait until all the attribute positions are correct + //before updating the field contents + for (std::vector<SwTxtInputFld*>::iterator aI = aTxtInputFlds.begin(); aI != aTxtInputFlds.end(); ++aI) + { + SwTxtInputFld* pTxtInputFld = *aI; + pTxtInputFld->UpdateFieldContent(); + } + if (bMergePortionsNeeded) { m_pSwpHints->MergePortions(*this); // does Resort too |