Kaydet (Commit) 95f4b2f4 authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: tdf#82942 updating field contents with incorrect attribute positions

Updating a SwTxtInputFld requires expanding the contents of the node.

Expanding the contents of the node requires all the positions of fields in the
node to be correct in order to expand them to the right place.

So on updating a SwTxtNode wait until all the attributes positions are adjusted
to be correct before expanding the SwTxtInputFlds in that node

Change-Id: I76500239a103e56be412707a708a303a58236070
üst 8b58e38b
......@@ -854,6 +854,8 @@ void SwTxtNode::Update(
{
if ( bNegative )
{
std::vector<SwTxtInputFld*> aTxtInputFlds;
const sal_Int32 nChangeEnd = nChangePos + nChangeLen;
for ( size_t n = 0; n < m_pSwpHints->Count(); ++n )
{
......@@ -896,12 +898,17 @@ 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 (SwTxtInputFld* pTxtInputFld : aTxtInputFlds)
{
pTxtInputFld->UpdateFieldContent();
}
m_pSwpHints->MergePortions( *this );
}
else
......@@ -910,6 +917,7 @@ void SwTxtNode::Update(
bool bResort = false;
bool bMergePortionsNeeded = false;
const int coArrSz = RES_TXTATR_WITHEND_END - RES_CHRATR_BEGIN;
std::vector<SwTxtInputFld*> aTxtInputFlds;
bool aDontExp[ coArrSz ];
memset( &aDontExp, 0, coArrSz * sizeof(bool) );
......@@ -1001,11 +1009,17 @@ 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 (SwTxtInputFld* pTxtInputFld : aTxtInputFlds)
{
pTxtInputFld->UpdateFieldContent();
}
if (bMergePortionsNeeded)
{
m_pSwpHints->MergePortions(*this); // does Resort too
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment