diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 7c54e7e6010c..1c9ab58340d0 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -102,6 +102,7 @@ #include #include #include +#include #include #include #include @@ -4364,6 +4365,10 @@ void DocxAttributeOutput::TableHeight( ww8::WW8TableNodeInfoInner::Pointer_t pTa void DocxAttributeOutput::TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) { + const SwTable * pTable = pTableTextNodeInfoInner->getTable(); + const SwFrameFormat * pFrameFormat = pTable->GetFrameFormat(); + const SwFormatLayoutSplit& rTableSplittable = pFrameFormat->GetLayoutSplit(); + const SwTableBox * pTabBox = pTableTextNodeInfoInner->getTableBox(); const SwTableLine * pTabLine = pTabBox->GetUpper(); const SwFrameFormat * pLineFormat = pTabLine->GetFrameFormat(); @@ -4371,7 +4376,7 @@ void DocxAttributeOutput::TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t p const SwFormatRowSplit& rSplittable = pLineFormat->GetRowSplit( ); // if rSplittable is true then no need to write // as default row prop is allow row to break across page. - if( !rSplittable.GetValue( ) ) + if( !rSplittable.GetValue( ) || !rTableSplittable.GetValue() ) m_pSerializer->singleElementNS(XML_w, XML_cantSplit, FSNS(XML_w, XML_val), "true"); } diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index bfbb71a23f84..e75f4bd40711 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -70,6 +70,7 @@ #include #include #include +#include #include #include #include @@ -844,13 +845,17 @@ void RtfAttributeOutput::TableHeight(ww8::WW8TableNodeInfoInner::Pointer_t pTabl void RtfAttributeOutput::TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner) { + const SwTable * pTable = pTableTextNodeInfoInner->getTable(); + const SwFrameFormat * pFrameFormat = pTable->GetFrameFormat(); + const SwFormatLayoutSplit& rTableSplittable = pFrameFormat->GetLayoutSplit(); + const SwTableBox* pTabBox = pTableTextNodeInfoInner->getTableBox(); const SwTableLine* pTabLine = pTabBox->GetUpper(); const SwFrameFormat* pLineFormat = pTabLine->GetFrameFormat(); const SwFormatRowSplit& rSplittable = pLineFormat->GetRowSplit(); // The rtf default is to allow a row to break - if (!rSplittable.GetValue()) + if (!rSplittable.GetValue() || !rTableSplittable.GetValue()) m_aRowDefs.append(OOO_STRING_SVTOOLS_RTF_TRKEEP); } diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx index 42859e7a481e..2d6d13d1d7fa 100644 --- a/sw/source/filter/ww8/wrtww8.cxx +++ b/sw/source/filter/ww8/wrtww8.cxx @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -2152,6 +2153,10 @@ void WW8AttributeOutput::TableVerticalCell( ww8::WW8TableNodeInfoInner::Pointer_ void WW8AttributeOutput::TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) { + const SwTable * pTable = pTableTextNodeInfoInner->getTable(); + const SwFrameFormat * pFrameFormat = pTable->GetFrameFormat(); + const SwFormatLayoutSplit& rTableSplittable = pFrameFormat->GetLayoutSplit(); + const SwTableBox * pTabBox = pTableTextNodeInfoInner->getTableBox(); const SwTableLine * pTabLine = pTabBox->GetUpper(); const SwFrameFormat * pLineFormat = pTabLine->GetFrameFormat(); @@ -2163,7 +2168,7 @@ void WW8AttributeOutput::TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t pT */ const SwFormatRowSplit& rSplittable = pLineFormat->GetRowSplit(); - sal_uInt8 nCantSplit = (!rSplittable.GetValue()) ? 1 : 0; + const sal_uInt8 nCantSplit = (!rSplittable.GetValue() || !rTableSplittable.GetValue()) ? 1 : 0; m_rWW8Export.InsUInt16( NS_sprm::sprmTFCantSplit ); m_rWW8Export.pO->push_back( nCantSplit ); m_rWW8Export.InsUInt16( NS_sprm::sprmTFCantSplit90 ); // also write fCantSplit90