diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2019-12-16 12:58:46 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2020-01-16 18:07:52 +0100 |
commit | 4f7677f39fd079badc9ce788e693cc1eb27d0817 (patch) | |
tree | 0a64d7d817fb8975c9ff33ef259c6dcd1664ae4d /writerfilter/source/dmapper/DomainMapper_Impl.cxx | |
parent | 2a380ac6c8e30d7e96a84482ce5935ddf7014dfc (diff) |
tdf#112202 writerfilter,sw: fix loss of headers
There are several problems here:
* CloseSectionGroup() is not only called for actual sections in the
document but also at the end of every special text like comment,
footnote, etc; only actual sections can set page styles. Writer
comments use editengine so cannot even contain sections.
* With continous section breaks, headers and footers are inherited from
the previous section unless defined by the current section;
SwXText::copyText() did not copy the content of the header on page 4
to page 5 correctly because it used an SwXTextCursor to create the
selection, which cannot select the table at the start of the header.
* For continuous section breaks, WW8 import filter has a heuristic to
find the first page break in the section and set the PageDescName
property on that node to apply the page style with the headers of the
new section; do something similar in writerfilter
SectionPropertyMap::CloseSectionGroup()
Change-Id: I3ebe3d299f83197cbf8f10de46c34de98677626c
Reviewed-on: https://gerrit.libreoffice.org/85213
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
(cherry picked from commit 08f13ab85b5c65b5dc8adfa15918fb3e426fcc3c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86911
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'writerfilter/source/dmapper/DomainMapper_Impl.cxx')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 8356ecb8e8ee..04432a9cb63e 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -589,7 +589,10 @@ void DomainMapper_Impl::PopProperties(ContextType eId) if ( eId == CONTEXT_SECTION ) { - m_pLastSectionContext = m_aPropertyStacks[eId].top( ); + if (m_aPropertyStacks[eId].size() == 1) // tdf#112202 only top level !!! + { + m_pLastSectionContext = m_aPropertyStacks[eId].top(); + } } else if (eId == CONTEXT_CHARACTER) { |