[Libreoffice-commits] core.git: sw/qa sw/source
Daniel Arato (NISZ) (via logerrit)
logerrit at kemper.freedesktop.org
Fri May 21 06:01:09 UTC 2021
sw/qa/extras/layout/data/tdf104254.docx |binary
sw/qa/extras/layout/layout2.cxx | 18 ++++++++++++++++++
sw/source/core/text/txtfly.cxx | 8 +++++---
3 files changed, 23 insertions(+), 3 deletions(-)
New commits:
commit 798b69087119c01a3b51e0bb3240ef35cfededeb
Author: Daniel Arato (NISZ) <arato.daniel at nisz.hu>
AuthorDate: Wed Mar 24 20:18:16 2021 +0100
Commit: László Németh <nemeth at numbertext.org>
CommitDate: Fri May 21 08:00:33 2021 +0200
tdf#104254 sw DOCX import: fix text wrapping in headers
Text wrapping around shapes and images used to be
turned off in header and footer frames. This commit
simply reenables that feature for headers/footers
(to avoid also regressions related to the fix i13832).
Change-Id: I46ca112f36e0c0c86342fa34fdb7cb7502745731
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113098
Tested-by: László Németh <nemeth at numbertext.org>
Reviewed-by: László Németh <nemeth at numbertext.org>
diff --git a/sw/qa/extras/layout/data/tdf104254.docx b/sw/qa/extras/layout/data/tdf104254.docx
new file mode 100644
index 000000000000..a074db337024
Binary files /dev/null and b/sw/qa/extras/layout/data/tdf104254.docx differ
diff --git a/sw/qa/extras/layout/layout2.cxx b/sw/qa/extras/layout/layout2.cxx
index 8846ff6a914e..7e962c9b5976 100644
--- a/sw/qa/extras/layout/layout2.cxx
+++ b/sw/qa/extras/layout/layout2.cxx
@@ -2472,6 +2472,24 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf124770)
assertXPath(pXmlDoc, "/root/page/body/txt[1]/LineBreak", 1);
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTextWrappingInHeader)
+{
+ SwDoc* pDoc = createDoc("tdf104254.docx");
+
+ std::shared_ptr<GDIMetaFile> xMetaFile = pDoc->GetDocShell()->GetPreviewMetaFile();
+ MetafileXmlDump dumper;
+ xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile);
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/metafile/push[1]/push[1]/push[1]/textarray", 2);
+
+ // Make sure the header image does not block any of the header text.
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: > 3000
+ // - Actual : 2009
+ OUString sTextArrayX = getXPath(pXmlDoc, "/metafile/push[1]/push[1]/push[1]/textarray[1]", "x");
+ CPPUNIT_ASSERT(sTextArrayX.toUInt32() > 3000);
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testContinuousEndnotesInsertPageAtStart)
{
// Create a new document with CONTINUOUS_ENDNOTES enabled.
diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx
index a5fb1f6b6731..28ffea4116ab 100644
--- a/sw/source/core/text/txtfly.cxx
+++ b/sw/source/core/text/txtfly.cxx
@@ -843,7 +843,8 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList()
const bool bAllowCompatWrap = m_pCurrFrame->IsInTab() && (bFooterHeader || m_pCurrFrame->IsInFootnote());
const bool bWrapAllowed = ( pIDSA->get(DocumentSettingId::USE_FORMER_TEXT_WRAPPING) ||
bAllowCompatWrap ||
- (!m_pCurrFrame->IsInFootnote() && !bFooterHeader));
+ (!m_pCurrFrame->IsInFootnote() && !bFooterHeader) ||
+ bFooterHeader );
m_bOn = false;
@@ -885,12 +886,14 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList()
// #i20505# Do not consider oversized objects
SwAnchoredObject* pAnchoredObj = (*pSorted)[ i ];
assert(pAnchoredObj);
+ const SwFormatSurround &rFlyFormat = pAnchoredObj->GetFrameFormat().GetSurround();
if ( !pAnchoredObj ||
!rIDDMA.IsVisibleLayerId( pAnchoredObj->GetDrawObj()->GetLayer() ) ||
!pAnchoredObj->ConsiderForTextWrap() ||
( mbIgnoreObjsInHeaderFooter && !bFooterHeader &&
pAnchoredObj->GetAnchorFrame()->FindFooterOrHeader() ) ||
- ( bAllowCompatWrap && !pAnchoredObj->GetFrameFormat().GetFollowTextFlow().GetValue() )
+ ( bAllowCompatWrap && !pAnchoredObj->GetFrameFormat().GetFollowTextFlow().GetValue() ) ||
+ ( !bAllowCompatWrap && bFooterHeader && com::sun::star::text::WrapTextMode_NONE == rFlyFormat.GetSurround() )
)
{
continue;
@@ -928,7 +931,6 @@ SwAnchoredObjList* SwTextFly::InitAnchoredObjList()
mpAnchoredObjList->insert( aInsPosIter, pAnchoredObj );
}
- const SwFormatSurround &rFlyFormat = pAnchoredObj->GetFrameFormat().GetSurround();
// #i68520#
if ( rFlyFormat.IsAnchorOnly() &&
pAnchoredObj->GetAnchorFrame() == GetMaster() )
More information about the Libreoffice-commits
mailing list