• Google Summer of Code 2010 / 2011 • Rewrite of the Writer RTF import/export • Then a full-time LibreOffice developer for SUSE • Now a contractor at Collabora
map endnotes to footnotes on the last page • Grows from the bottom up, now from to the top to bottom after content • Native Writer behavior: separate endnote page • Collapses with large amount of endnotes • Especially if those are of multiple pages
• No backing section node, only exists at a layout level • At the end of the document • No actual content in the section’s body, just hosts a foot/endnote container • Can flow across pages, can handle many notes
cases, but the compat flag (to render Word-style endnotes, not Writer-style ones) is just used by DOC files, only in case they have 1 or 2 endnotes • Reverts the changes of the old approach • Creates the layout-level section for endnotes on demand • Handles moving the endnote to a previous or next page
check’ finds • What crashtesting has to say • Found problem: trouble if there is a section at the document end already • We tried to insert the section for the endnotes inside that last section from model, fixed
instantly • Still had to fix: • Endnote container’s top margin • Endnote separator position • Endnote separator length • DOCX has a per-doc flag to collect endnotes at section end • Import / export of this • Endnote continuation separator length • Writer UI: conditionally hide widgets which won’t work for DOCX
an instance of the com.sun.star.document.Settings service • Implements beans::XPropertySet • Can set the ContinuousEndnotes property there to true to have the Word behavior
where the foot/endnote frames are created • A note can go to the end of the current section, to a note page, and now can go to the special new endnote section at the end of the document • The endnote section is created on demand • Moving to the next page works out of the box • Moving to the previous page needs explicit handling in SwFlowFrame::MoveBwd() • Similar to moving sections to the previous page is handled in SwFrame::GetPrevSctLeaf()
endnotes for 1 or 2 endnotes from DOC, have it for all DOC • Also enable it for DOCX • DOCX <w:endnotePr> describes the position of the endnotes in a document • At document end vs at section end • Existing ODF documents stay unchanged
The old approach was reverted for DOCX in the past • It was also restricted to 1-2 endnotes for DOC in the past • Various provided documents to show the old layout was poor • Largest document is 72 endotes, over several pages at the document end • Automated testing: • CppunitTest_sw_core_layout for the actual layout • CppunitTest_sw_writerfilter_dmapper for the DOCX import • CppunitTest_sw_filter_ww8 for the DOCX export • bin/diff-pdf-page.py for the visual diff, based on Laszlo’s idea
layout endnotes at the end of the document, as opposed to layout on a separate endnote page • Compatible with Word • Scales properly: • Many endnotes • Many footnotes • Available for everyone using LibreOffice Technology: LibreOffice desktop, Collabora Online, etc.