diff --git a/sw/qa/extras/layout/data/tdf116989.docx b/sw/qa/extras/layout/data/tdf116989.docx deleted file mode 100644 index 498b60dbf345..000000000000 Binary files a/sw/qa/extras/layout/data/tdf116989.docx and /dev/null differ diff --git a/sw/qa/extras/layout/data/tdf122878.docx b/sw/qa/extras/layout/data/tdf122878.docx new file mode 100644 index 000000000000..f42e92ea2641 Binary files /dev/null and b/sw/qa/extras/layout/data/tdf122878.docx differ diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 99ca36673c71..83af848df67f 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -64,7 +64,7 @@ public: void testTdf120287(); void testTdf120287b(); void testTdf120287c(); - void testTdf116989(); + void testTdf122878(); void testTdf115094(); CPPUNIT_TEST_SUITE(SwLayoutWriter); @@ -103,7 +103,7 @@ public: CPPUNIT_TEST(testTdf120287); CPPUNIT_TEST(testTdf120287b); CPPUNIT_TEST(testTdf120287c); - CPPUNIT_TEST(testTdf116989); + CPPUNIT_TEST(testTdf122878); CPPUNIT_TEST(testTdf115094); CPPUNIT_TEST_SUITE_END(); @@ -2718,17 +2718,17 @@ void SwLayoutWriter::testTdf120287c() assertXPath(pXmlDoc, "/root/page/body/txt[1]/LineBreak", 3); } -void SwLayoutWriter::testTdf116989() +void SwLayoutWriter::testTdf122878() { - createDoc("tdf116989.docx"); + createDoc("tdf122878.docx"); xmlDocPtr pXmlDoc = parseLayoutDump(); // FIXME: the XPath should be adjusted when the proper floating table would be imported const sal_Int32 nTblTop - = getXPath(pXmlDoc, "/root/page[1]/footer/tab/infos/bounds", "top").toInt32(); + = getXPath(pXmlDoc, "/root/page[1]/footer/txt/anchored/fly/tab/infos/bounds", "top") + .toInt32(); const sal_Int32 nFirstPageParaCount = getXPathContent(pXmlDoc, "count(/root/page[1]/body/txt)").toInt32(); - // FIXME: should be exactly 30, when proper floating tables in footers are supported - CPPUNIT_ASSERT_GREATEREQUAL(sal_Int32(30), nFirstPageParaCount); + CPPUNIT_ASSERT_EQUAL(sal_Int32(30), nFirstPageParaCount); for (sal_Int32 i = 1; i <= nFirstPageParaCount; ++i) { const OString xPath = "/root/page[1]/body/txt[" + OString::number(i) + "]/infos/bounds"; diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx index 1fbf696c4cf5..a5a448e94fd3 100644 --- a/sw/source/core/text/txtfly.cxx +++ b/sw/source/core/text/txtfly.cxx @@ -803,7 +803,6 @@ bool SwTextFly::GetTop( const SwAnchoredObject* _pAnchoredObj, // #i13832#, #i24135# wrap around objects in page header ( !pIDSA->get(DocumentSettingId::USE_FORMER_TEXT_WRAPPING) && nullptr != ( pHeader = pTmp->FindFooterOrHeader() ) && - !pHeader->IsFooterFrame() && m_pCurrFrame->IsInDocBody()))) { if( pHeader || RndStdIds::FLY_AT_FLY == rNewA.GetAnchorId() ) diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 04fd361b7e36..01c7f59fc314 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -1176,8 +1176,7 @@ void DomainMapperTableHandler::endTable(unsigned int nestedTableLevel, bool bTab m_aTableProperties->getValue(TablePropertyMap::TABLE_WIDTH_TYPE, nTableWidthType); if (m_rDMapper_Impl.GetSectionContext() && nestedTableLevel <= 1 && !m_rDMapper_Impl.IsInHeaderFooter()) m_rDMapper_Impl.m_aPendingFloatingTables.emplace_back(xStart, xEnd, comphelper::containerToSequence(aFrameProperties), nTableWidth, nTableWidthType); - else if (!m_rDMapper_Impl.IsInFooter()) // FIXME: tdf#116989 floating objects anchored - //to footer cannot have proper wrapping + else { // m_xText points to the body text, get the current xText from m_rDMapper_Impl, in case e.g. we would be in a header. uno::Reference xTextAppendAndConvert(m_rDMapper_Impl.GetTopTextAppend(), uno::UNO_QUERY);