sw34bf06: #i117825#: try to reduce collateral damage from #i104949# fix
only ignore text:variable-set fields that are hidden and at start of
para.
Signed-off-by: Cédric Bosdonnat <cedric.bosdonnat.ooo@free.fr>
diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx
index 3fee2ae..20b7f80 100644
--- a/sw/source/core/table/swtable.cxx
+++ b/sw/source/core/table/swtable.cxx
@@ -2561,6 +2561,7 @@ sal_uLong SwTableBox::IsValidNumTxtNd( sal_Bool bCheckAttr ) const
// Flys/Felder/..
if( pHts )
{
xub_StrLen nNextSetField = 0;
for( sal_uInt16 n = 0; n < pHts->Count(); ++n )
{
const SwTxtAttr* pAttr = (*pHts)[ n ];
@@ -2568,11 +2569,21 @@ sal_uLong SwTableBox::IsValidNumTxtNd( sal_Bool bCheckAttr ) const
*pAttr->GetStart() ||
*pAttr->GetAnyEnd() < rTxt.Len() )
{
if ( pAttr->Which() == RES_TXTATR_FIELD )
if ((*pAttr->GetStart() == nNextSetField) &&
(pAttr->Which() == RES_TXTATR_FIELD))
{
// #i104949# hideous hack for report builder:
// it inserts hidden variable-set fields at
// the beginning of para in cell, but they
// should not turn cell into text cell
const SwField* pField = pAttr->GetFld().GetFld();
if ( pField && pField->GetTypeId() == TYP_SETFLD )
if (pField &&
(pField->GetTypeId() == TYP_SETFLD) &&
(0 != (static_cast<SwSetExpField const*>
(pField)->GetSubType() &
nsSwExtendedSubType::SUB_INVISIBLE)))
{
nNextSetField = *pAttr->GetStart() + 1;
continue;
}
}