tdf#156419 sw: layout: don't prevent moving between linked flys
... when there is a page break on the next page.
Of course you can put a section into a fly, and then link multiple flys.
(regression from commit 325fe7ab507fd8f2ca17a3db32181edf30169525)
Change-Id: I5cb854fc7ee5caa2af4e04f4da2d8a8083c0d007
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155842
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
(cherry picked from commit 987fe1175de2db53235cc6f2441335fcc3548d64)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155845
Tested-by: Michael Stahl <michael.stahl@allotropia.de>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
diff --git a/sw/qa/extras/layout/data/linked_frames_section_bug.odt b/sw/qa/extras/layout/data/linked_frames_section_bug.odt
new file mode 100644
index 0000000..639332a
--- /dev/null
+++ b/sw/qa/extras/layout/data/linked_frames_section_bug.odt
Binary files differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 06f5acc..0ffdb54 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -5138,6 +5138,24 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf155324)
assertXPath(pXmlDoc, "/root/page[5]/ftncont/ftn", 5);
}
CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf156419)
{
createSwDoc("linked_frames_section_bug.odt");
xmlDocUniquePtr pXmlDoc = parseLayoutDump();
assertXPath(pXmlDoc, "/root/page", 2);
// there are 2 flys on page 1, and 1 on page 2, all linked
assertXPath(pXmlDoc, "/root/page[1]/body/txt/anchored/fly[1]/section/column", 2);
assertXPath(pXmlDoc, "/root/page[1]/body/txt/anchored/fly[1]/section/column[1]/body/txt", 11);
assertXPath(pXmlDoc, "/root/page[1]/body/txt/anchored/fly[1]/section/column[2]/body/txt", 11);
assertXPath(pXmlDoc, "/root/page[1]/body/txt/anchored/fly[2]/section/column", 2);
assertXPath(pXmlDoc, "/root/page[1]/body/txt/anchored/fly[2]/section/column[1]/body/txt", 12);
assertXPath(pXmlDoc, "/root/page[1]/body/txt/anchored/fly[2]/section/column[2]/body/txt", 12);
assertXPath(pXmlDoc, "/root/page[2]/body/txt/anchored/fly[1]/section/column", 2);
assertXPath(pXmlDoc, "/root/page[2]/body/txt/anchored/fly[1]/section/column[1]/body/txt", 2);
assertXPath(pXmlDoc, "/root/page[2]/body/txt/anchored/fly[1]/section/column[2]/body/txt", 1);
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx
index 11d8557..b86ccbf 100644
--- a/sw/source/core/layout/sectfrm.cxx
+++ b/sw/source/core/layout/sectfrm.cxx
@@ -1758,6 +1758,7 @@ SwLayoutFrame *SwFrame::GetNextSctLeaf( MakePageType eMakePage )
// creating / moving the cell frame.
// It doesn't make sense to move to a page that starts with break?
if (pNxtPg != FindPageFrame() // tdf#156725 not between columns!
&& !FindFlyFrame() // tdf#156419 linked fly frames don't care!
&& (WrongPageDesc(pNxtPg) || HasPageBreakBefore(*pNxtPg))
&& !bLayLeafTableAllowed)
{