summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf104354-2.docxbin15779 -> 15263 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf113258_noBeforeAutospacing.docxbin0 -> 16284 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport11.cxx9
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport9.cxx12
-rw-r--r--sw/qa/extras/rtfexport/rtfexport.cxx8
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx79
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx97
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx6
-rw-r--r--writerfilter/source/dmapper/PropertyMap.hxx2
-rw-r--r--writerfilter/source/dmapper/TableManager.cxx6
-rw-r--r--writerfilter/source/dmapper/TableManager.hxx4
11 files changed, 103 insertions, 120 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf104354-2.docx b/sw/qa/extras/ooxmlexport/data/tdf104354-2.docx
index 9f40bf77976e..5b67e015fb1b 100644
--- a/sw/qa/extras/ooxmlexport/data/tdf104354-2.docx
+++ b/sw/qa/extras/ooxmlexport/data/tdf104354-2.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf113258_noBeforeAutospacing.docx b/sw/qa/extras/ooxmlexport/data/tdf113258_noBeforeAutospacing.docx
new file mode 100644
index 000000000000..de74eb2268df
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf113258_noBeforeAutospacing.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
index e412f8703c07..fc7c469e1c2f 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
@@ -369,6 +369,15 @@ DECLARE_OOXMLEXPORT_TEST(testTdf113258, "tdf113258.docx")
getProperty<sal_Int32>(xShape->getStart(), "ParaTopMargin"));
}
+DECLARE_OOXMLEXPORT_TEST(testTdf113258_noBeforeAutospacing, "tdf113258_noBeforeAutospacing.docx")
+{
+ uno::Reference<text::XTextRange> xShape(getShape(1), uno::UNO_QUERY);
+ // This was 0, i.e. disabled automatic spacing still resulted in zero paragraph
+ // top margin for the first paragraph in a shape.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1764),
+ getProperty<sal_Int32>(xShape->getStart(), "ParaTopMargin"));
+}
+
DECLARE_OOXMLEXPORT_TEST(testTdf104354, "tdf104354.docx")
{
uno::Reference<text::XTextRange> xShape(getShape(1), uno::UNO_QUERY);
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
index ed841f245459..fbe0c2339b6b 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
@@ -1241,8 +1241,7 @@ DECLARE_OOXMLEXPORT_TEST(testTdf104354_2, "tdf104354-2.docx")
// bottom margin is not auto spacing
uno::Reference<text::XTextRange> xCell3(xTable->getCellByName("A3"), uno::UNO_QUERY);
- // FIXME next top margin will be 0 after fixing this, too
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(494), getProperty<sal_Int32>(getParagraphOfText(1, xCell3->getText()), "ParaTopMargin"));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(1, xCell3->getText()), "ParaTopMargin"));
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(847), getProperty<sal_Int32>(getParagraphOfText(1, xCell3->getText()), "ParaBottomMargin"));
// auto spacing, if the paragraph contains footnotes
@@ -1250,6 +1249,15 @@ DECLARE_OOXMLEXPORT_TEST(testTdf104354_2, "tdf104354-2.docx")
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(1, xCell4->getText()), "ParaTopMargin"));
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(1, xCell4->getText()), "ParaBottomMargin"));
+ // auto spacing is explicitly disabled, and no margins are defined.
+ xCell.set(xTable->getCellByName("A5"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(1, xCell->getText()), "ParaTopMargin"));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(1, xCell->getText()), "ParaBottomMargin"));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(2, xCell->getText()), "ParaTopMargin"));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(2, xCell->getText()), "ParaBottomMargin"));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(3, xCell->getText()), "ParaTopMargin"));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), getProperty<sal_Int32>(getParagraphOfText(3, xCell->getText()), "ParaBottomMargin"));
+
// auto spacing on a paragraph
uno::Reference<text::XTextTable> xTable2(xTables->getByIndex(1), uno::UNO_QUERY);
uno::Reference<text::XTextRange> xCell5(xTable2->getCellByName("A1"), uno::UNO_QUERY);
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 78a2c77a9e80..009cd00eb14d 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -982,9 +982,7 @@ DECLARE_RTFEXPORT_TEST(testNumOverrideStart, "num-override-start.rtf")
DECLARE_RTFEXPORT_TEST(testFdo82006, "fdo82006.rtf")
{
// These were 176 (100 twips), as \sbauto and \sbbefore were ignored.
- // FIXME Exception: first paragraph gets zero top margin, see tdf#118533.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(280)),
- getProperty<sal_Int32>(getParagraph(1), "ParaTopMargin"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(1), "ParaTopMargin"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(280)),
getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(280)),
@@ -1425,9 +1423,7 @@ DECLARE_RTFEXPORT_TEST(testTdf112507, "tdf112507.rtf")
DECLARE_RTFEXPORT_TEST(testTdf107480, "tdf107480.rtf")
{
// These were 176 (100 twips), as \htmautsp was parsed too late.
- // FIXME Exception: first paragraph gets zero top margin, see tdf#118533.
- CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(280)),
- getProperty<sal_Int32>(getParagraph(1), "ParaTopMargin"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(1), "ParaTopMargin"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(280)),
getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin"));
CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(280)),
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 4b07d253eb21..a85590baf5e7 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -646,54 +646,41 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
// See SwWW8ImplReader::GetParagraphAutoSpace() on why these are 100 and 280
case NS_ooxml::LN_CT_Spacing_beforeAutospacing:
{
- sal_Int32 default_spacing = 100;
- if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
+ sal_Int32 default_spacing = -1;
+ if (nIntValue)
{
- // 49 is just the old value that should be removed, once the
- // root cause in SwTabFrm::MakeAll() is fixed.
- if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_doc_ST_View_web)
- default_spacing = 49;
- else
+ m_pImpl->SetParaAutoBefore(true);
+
+ default_spacing = 100;
+ if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
{
- // tdf#104354 first paragraphs of table cells and shapes get zero top margin
- if ((m_pImpl->GetIsFirstParagraphInSection() && m_pImpl->m_nTableDepth > 0) ||
- m_pImpl->GetIsFirstParagraphInShape())
- default_spacing = 0;
+ // 49 is just the old value that should be removed, once the
+ // root cause in SwTabFrm::MakeAll() is fixed.
+ if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_doc_ST_View_web)
+ default_spacing = 49;
else
default_spacing = 280;
}
- }
- if (nIntValue) // If auto spacing is set, then only store set value in InteropGrabBag
- {
- m_pImpl->SetParaAutoBefore(true);
- m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) );
- }
- else
- {
- default_spacing = -1;
+ // required at export (here mainly for StyleSheets) to determine if the setting has changed from grab_bag
+ m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN, uno::makeAny(ConversionHelper::convertTwipToMM100(default_spacing)));
}
m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG );
}
break;
case NS_ooxml::LN_CT_Spacing_afterAutospacing:
{
- sal_Int32 default_spacing = 100;
-
- if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
+ sal_Int32 default_spacing = -1;
+ if (nIntValue)
{
- if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_doc_ST_View_web)
- default_spacing = 49;
- else
- default_spacing = 280;
- }
- if (nIntValue) // If auto spacing is set, then only store set value in InteropGrabBag
- {
- m_pImpl->SetParaAutoAfter(true);
- m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ) );
- }
- else
- {
- default_spacing = -1;
+ default_spacing = 100;
+ if (!m_pImpl->GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing())
+ {
+ if (m_pImpl->GetSettingsTable()->GetView() == NS_ooxml::LN_Value_doc_ST_View_web)
+ default_spacing = 49;
+ else
+ default_spacing = 280;
+ }
+ m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, uno::makeAny(ConversionHelper::convertTwipToMM100(default_spacing)));
}
m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING, uno::makeAny( ConversionHelper::convertTwipToMM100(default_spacing) ),true, PARA_GRAB_BAG );
}
@@ -2110,27 +2097,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext )
const OUString sConvertedStyleName = pStyleTable->ConvertStyleName( sStringValue, true );
m_pImpl->SetCurrentParaStyleName( sConvertedStyleName );
if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION)
- {
m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, uno::makeAny( sConvertedStyleName ));
-
- if (m_pImpl->GetIsFirstParagraphInShape())
- {
- // First paragraph in shape: see if we need to disable
- // paragraph top margin from style.
- StyleSheetEntryPtr pEntry
- = m_pImpl->GetStyleSheetTable()->FindStyleSheetByConvertedStyleName(
- sConvertedStyleName);
- if (pEntry)
- {
- boost::optional<PropertyMap::Property> pParaAutoBefore
- = pEntry->pProperties->getProperty(
- PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING);
- if (pParaAutoBefore)
- m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN,
- uno::makeAny(static_cast<sal_Int32>(0)));
- }
- }
- }
}
break;
case NS_ooxml::LN_EG_RPrBase_rStyle:
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index c1a579b308f8..12bd911f5e59 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -253,11 +253,9 @@ DomainMapper_Impl::DomainMapper_Impl(
m_vTextFramesForChaining(),
m_bParaHadField(false),
m_bParaAutoBefore(false),
- m_bParaAutoAfter(false),
- m_bPrevParaAutoAfter(false),
- m_bParaChangedBottomMargin(false),
m_bFirstParagraphInCell(true),
m_bSaveFirstParagraphInCell(false)
+
{
m_aBaseUrl = rMediaDesc.getUnpackedValueOrDefault(
utl::MediaDescriptor::PROP_DOCUMENTBASEURL(), OUString());
@@ -1236,6 +1234,48 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
pParaContext->Insert( PROP_NUMBERING_LEVEL, uno::makeAny(pStyleSheetProperties->GetListLevel()), false);
}
+ // apply AutoSpacing: it has priority over all other margin settings
+ // (note that numbering with autoSpacing is handled separately later on)
+ const bool bAllowAdjustments = !GetSettingsTable()->GetDoNotUseHTMLParagraphAutoSpacing();
+ sal_Int32 nBeforeAutospacing = -1;
+ bool bIsAutoSet = pParaContext && pParaContext->isSet(PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING);
+ // apply INHERITED autospacing only if top margin is not set
+ if ( bIsAutoSet || (pParaContext && !pParaContext->isSet(PROP_PARA_TOP_MARGIN)) )
+ GetAnyProperty(PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, pPropertyMap) >>= nBeforeAutospacing;
+ if ( nBeforeAutospacing > -1 && pParaContext )
+ {
+ if ( bAllowAdjustments )
+ {
+ if ( GetIsFirstParagraphInShape() ||
+ (GetIsFirstParagraphInSection() && GetSectionContext() && GetSectionContext()->IsFirstSection()) ||
+ (m_bFirstParagraphInCell && m_nTableDepth > 0 && m_nTableDepth == m_nTableCellDepth) )
+ {
+ nBeforeAutospacing = 0;
+ // export requires grabbag to match top_margin, so keep them in sync
+ if ( bIsAutoSet )
+ pParaContext->Insert( PROP_PARA_TOP_MARGIN_BEFORE_AUTO_SPACING, uno::makeAny( sal_Int32(0) ),true, PARA_GRAB_BAG );
+ }
+ }
+ pParaContext->Insert(PROP_PARA_TOP_MARGIN, uno::makeAny(nBeforeAutospacing));
+ }
+
+ sal_Int32 nAfterAutospacing = -1;
+ bIsAutoSet = pParaContext && pParaContext->isSet(PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING);
+ bool bApplyAutospacing = bIsAutoSet || (pParaContext && !pParaContext->isSet(PROP_PARA_BOTTOM_MARGIN));
+ if ( bApplyAutospacing )
+ GetAnyProperty(PROP_PARA_BOTTOM_MARGIN_AFTER_AUTO_SPACING, pPropertyMap) >>= nAfterAutospacing;
+ if ( nAfterAutospacing > -1 && pParaContext )
+ {
+ pParaContext->Insert(PROP_PARA_BOTTOM_MARGIN, uno::makeAny(nAfterAutospacing));
+ bApplyAutospacing = bAllowAdjustments;
+ }
+ else
+ bApplyAutospacing = false;
+
+ // tell TableManager to reset the bottom margin if it determines that this is the cell's last paragraph.
+ if ( hasTableManager() && getTableManager().isInCell() )
+ getTableManager().setCellLastParaAfterAutospacing( bApplyAutospacing );
+
if (xTextAppend.is() && pParaContext && hasTableManager() && !getTableManager().isIgnore())
{
@@ -1310,7 +1350,6 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
lcl_AddRangeAndStyle(pToBeSavedProperties, xTextAppend, pPropertyMap, rAppendContext);
}
}
-
}
else
{
@@ -1323,7 +1362,6 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
}
}
std::vector<beans::PropertyValue> aProperties;
- bool bNumberedParagraph = false;
if (pPropertyMap.get())
aProperties = comphelper::sequenceToContainer< std::vector<beans::PropertyValue> >(pPropertyMap->GetPropertyValues());
if( !bIsDropCap )
@@ -1368,7 +1406,6 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
if (itNumberingRules != aProperties.end())
{
// This textnode has numbering. Look up the numbering style name of the current and previous paragraph.
- bNumberedParagraph = true;
OUString aCurrentNumberingRuleName;
uno::Reference<container::XNamed> xCurrentNumberingRules(itNumberingRules->Value, uno::UNO_QUERY);
if (xCurrentNumberingRules.is())
@@ -1450,30 +1487,6 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
uno::Reference< text::XTextRange > xParaEnd( xCur, uno::UNO_QUERY );
CheckParaMarkerRedline( xParaEnd );
}
- // set top margin of the previous auto paragraph in cells, keeping zero top margin only at the first one
- if (m_nTableDepth > 0 && m_nTableDepth == m_nTableCellDepth && m_xPreviousParagraph.is())
- {
- bool bParaChangedTopMargin = std::any_of(aProperties.begin(), aProperties.end(), [](const beans::PropertyValue& rValue)
- {
- return rValue.Name == "ParaTopMargin";
- });
-
- uno::Sequence<beans::PropertyValue> aPrevPropertiesSeq;
- m_xPreviousParagraph->getPropertyValue("ParaInteropGrabBag") >>= aPrevPropertiesSeq;
- auto aPrevProperties = comphelper::sequenceToContainer< std::vector<beans::PropertyValue> >(aPrevPropertiesSeq);
- bool bPrevParaAutoBefore = std::any_of(aPrevProperties.begin(), aPrevProperties.end(), [](const beans::PropertyValue& rValue)
- {
- return rValue.Name == "ParaTopMarginBeforeAutoSpacing";
- });
-
- if ((bPrevParaAutoBefore && !bParaChangedTopMargin) || (bParaChangedTopMargin && m_bParaAutoBefore))
- {
- sal_Int32 nSize = (m_bFirstParagraphInCell || bNumberedParagraph) ? 0 : 280;
- // Previous before spacing is set to auto, set previous before space to 280, except in the first paragraph.
- m_xPreviousParagraph->setPropertyValue("ParaTopMargin",
- uno::makeAny( ConversionHelper::convertTwipToMM100(nSize)));
- }
- }
// tdf#118521 set paragraph top or bottom margin based on the paragraph style
// if we already set the other margin with direct formatting
@@ -1565,12 +1578,6 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
if (m_bIsFirstParaInShape)
m_bIsFirstParaInShape = false;
- // keep m_bParaAutoAfter for table paragraphs
- m_bPrevParaAutoAfter = m_bParaAutoAfter || m_bPrevParaAutoAfter;
-
- // not auto margin in this paragraph
- m_bParaChangedBottomMargin = (pParaContext && pParaContext->isSet(PROP_PARA_BOTTOM_MARGIN) && !m_bParaAutoAfter);
-
if (pParaContext)
{
// Reset the frame properties for the next paragraph
@@ -1585,7 +1592,6 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con
m_bFirstParagraphInCell = false;
m_bParaAutoBefore = false;
- m_bParaAutoAfter = false;
#ifdef DEBUG_WRITERFILTER
TagLogger::getInstance().endElement();
@@ -2508,21 +2514,12 @@ bool DomainMapper_Impl::IsDiscardHeaderFooter()
void DomainMapper_Impl::ClearPreviousParagraph()
{
// in table cells, set bottom auto margin of last paragraph to 0, except in paragraphs with numbering
- if ((m_nTableDepth == (m_nTableCellDepth + 1)) && m_xPreviousParagraph.is() && !m_bParaChangedBottomMargin)
+ if ((m_nTableDepth == (m_nTableCellDepth + 1))
+ && m_xPreviousParagraph.is()
+ && hasTableManager() && getTableManager().isCellLastParaAfterAutospacing())
{
- uno::Sequence<beans::PropertyValue> aPrevPropertiesSeq;
- m_xPreviousParagraph->getPropertyValue("ParaInteropGrabBag") >>= aPrevPropertiesSeq;
- auto aPrevProperties = comphelper::sequenceToContainer< std::vector<beans::PropertyValue> >(aPrevPropertiesSeq);
- bool bPrevParaAutoAfter = std::any_of(aPrevProperties.begin(), aPrevProperties.end(), [](const beans::PropertyValue& rValue)
- {
- return rValue.Name == "ParaBottomMarginAfterAutoSpacing";
- });
-
- bool bPrevNumberingRules = false;
uno::Reference<container::XNamed> xPreviousNumberingRules(m_xPreviousParagraph->getPropertyValue("NumberingRules"), uno::UNO_QUERY);
- if (xPreviousNumberingRules.is())
- bPrevNumberingRules = !xPreviousNumberingRules->getName().isEmpty();
- if (!bPrevNumberingRules && (bPrevParaAutoAfter || m_bPrevParaAutoAfter))
+ if ( !xPreviousNumberingRules.is() || xPreviousNumberingRules->getName().isEmpty() )
m_xPreviousParagraph->setPropertyValue("ParaBottomMargin", uno::makeAny(static_cast<sal_Int32>(0)));
}
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 342fa4d0f006..5547af6b8cde 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -979,7 +979,6 @@ public:
bool IsDiscardHeaderFooter();
void SetParaAutoBefore(bool bParaAutoBefore) { m_bParaAutoBefore = bParaAutoBefore; }
- void SetParaAutoAfter(bool bParaAutoAfter) { m_bParaAutoAfter = bParaAutoAfter; }
/// Forget about the previous paragraph, as it's not inside the same
/// start/end node.
@@ -993,11 +992,6 @@ private:
css::uno::Reference<css::beans::XPropertySet> m_xPreviousParagraph;
/// Current paragraph has automatic before spacing.
bool m_bParaAutoBefore;
- /// Current paragraph has automatic after spacing.
- bool m_bParaAutoAfter;
- /// Paragraph has direct top or bottom margin formattings
- bool m_bPrevParaAutoAfter;
- bool m_bParaChangedBottomMargin;
/// Current paragraph in a table is first paragraph of a cell
bool m_bFirstParagraphInCell;
bool m_bSaveFirstParagraphInCell;
diff --git a/writerfilter/source/dmapper/PropertyMap.hxx b/writerfilter/source/dmapper/PropertyMap.hxx
index f43bb38cad77..660983a9eebe 100644
--- a/writerfilter/source/dmapper/PropertyMap.hxx
+++ b/writerfilter/source/dmapper/PropertyMap.hxx
@@ -306,6 +306,8 @@ public:
explicit SectionPropertyMap( bool bIsFirstSection );
+ bool IsFirstSection() { return m_bIsFirstSection; }
+
void SetStart( const css::uno::Reference< css::text::XTextRange >& xRange ) { m_xStartingRange = xRange; }
const css::uno::Reference< css::text::XTextRange >& GetStartingRange() const { return m_xStartingRange; }
diff --git a/writerfilter/source/dmapper/TableManager.cxx b/writerfilter/source/dmapper/TableManager.cxx
index 486381a0f08d..bfe8618c8de8 100644
--- a/writerfilter/source/dmapper/TableManager.cxx
+++ b/writerfilter/source/dmapper/TableManager.cxx
@@ -463,6 +463,11 @@ void TableManager::setTableStartsAtCellStart(bool bTableStartsAtCellStart)
m_bTableStartsAtCellStart = bTableStartsAtCellStart;
}
+void TableManager::setCellLastParaAfterAutospacing(bool bIsAfterAutospacing)
+{
+ m_bCellLastParaAfterAutospacing = bIsAfterAutospacing;
+}
+
TableManager::TableManager()
: mnTableDepthNew(0), mnTableDepth(0), mbKeepUnfinishedRow(false),
m_bTableStartsAtCellStart(false)
@@ -470,6 +475,7 @@ TableManager::TableManager()
setRowEnd(false);
setInCell(false);
setCellEnd(false);
+ m_bCellLastParaAfterAutospacing = false;
}
}
diff --git a/writerfilter/source/dmapper/TableManager.hxx b/writerfilter/source/dmapper/TableManager.hxx
index 0be365ae4e33..02839c681e29 100644
--- a/writerfilter/source/dmapper/TableManager.hxx
+++ b/writerfilter/source/dmapper/TableManager.hxx
@@ -273,6 +273,8 @@ private:
/// If this is a nested table, does it start at cell start?
bool m_bTableStartsAtCellStart;
+ bool m_bCellLastParaAfterAutospacing;
+
/**
handler for resolveCurrentTable
*/
@@ -473,6 +475,8 @@ public:
void setTableStartsAtCellStart(bool bTableStartsAtCellStart);
+ void setCellLastParaAfterAutospacing(bool bIsAfterAutospacing);
+ bool isCellLastParaAfterAutospacing() {return m_bCellLastParaAfterAutospacing;}
};
}