[Libreoffice-commits] core.git: sw/qa sw/source
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Thu Oct 24 15:56:53 UTC 2019
sw/qa/extras/layout/layout.cxx | 26 ++++++++++++++++++++++++++
sw/source/core/layout/ftnfrm.cxx | 7 ++++++-
2 files changed, 32 insertions(+), 1 deletion(-)
New commits:
commit 14885ae3637d3e0d276e4cce0c1051c0bcf15c47
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Thu Oct 24 17:05:46 2019 +0200
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Thu Oct 24 17:55:14 2019 +0200
sw ContinuousEndnotes: fix moving them to the next page
If you insert a page break at the start of the document, the endnotes on
the old last page were not moved to the new last page. Fix this.
Change-Id: I0d54cc4242648dfd9a268e6189a35c88a19069eb
Reviewed-on: https://gerrit.libreoffice.org/81459
Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
Tested-by: Jenkins
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 5adaf5a54492..c12c55082ee3 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -3335,6 +3335,32 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf124770)
assertXPath(pXmlDoc, "/root/page/body/txt[1]/LineBreak", 1);
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testContinuousEndnotesInsertPageAtStart)
+{
+ // Create a new document with CONTINUOUS_ENDNOTES enabled.
+ SwDoc* pDoc = createDoc();
+ pDoc->getIDocumentSettingAccess().set(DocumentSettingId::CONTINUOUS_ENDNOTES, true);
+
+ // Insert a second page, and an endnote on the 2nd page (both the anchor and the endnote is on
+ // the 2nd page).
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+ pWrtShell->InsertPageBreak();
+ pWrtShell->InsertFootnote("endnote", /*bEndNote=*/true, /*bEdit=*/false);
+
+ // Add a new page at the start of the document.
+ pWrtShell->SttEndDoc(/*bStart=*/true);
+ pWrtShell->InsertPageBreak();
+
+ // Make sure that the endnote is moved from the 2nd page to the 3rd one.
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page", 3);
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 1
+ // - Actual : 0
+ // i.e. the footnote container remained on page 2.
+ assertXPath(pXmlDoc, "/root/page[3]/ftncont", 1);
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/layout/ftnfrm.cxx b/sw/source/core/layout/ftnfrm.cxx
index d4d4e531e798..6711643d438b 100644
--- a/sw/source/core/layout/ftnfrm.cxx
+++ b/sw/source/core/layout/ftnfrm.cxx
@@ -1859,7 +1859,12 @@ void SwFootnoteBossFrame::CollectFootnotes_( const SwContentFrame* _pRef,
// OD 03.04.2003 #108446# - determine, if found footnote has to be collected.
bool bCollectFoundFootnote = false;
- if ( _pFootnote->GetRef() == _pRef && !_pFootnote->GetAttr()->GetFootnote().IsEndNote() )
+ // Ignore endnotes which are on a separate endnote page.
+ bool bEndNote = _pFootnote->GetAttr()->GetFootnote().IsEndNote();
+ const IDocumentSettingAccess& rSettings
+ = _pFootnote->GetAttrSet()->GetDoc()->getIDocumentSettingAccess();
+ bool bContinuousEndnotes = rSettings.get(DocumentSettingId::CONTINUOUS_ENDNOTES);
+ if (_pFootnote->GetRef() == _pRef && (!bEndNote || bContinuousEndnotes))
{
if ( _bCollectOnlyPreviousFootnotes )
{
More information about the Libreoffice-commits
mailing list