summaryrefslogtreecommitdiff
path: root/sw/source/filter/ww8/ww8par.cxx
diff options
context:
space:
mode:
authorLuke Deller <luke@deller.id.au>2014-07-06 23:19:18 +1000
committerCaolán McNamara <caolanm@redhat.com>2014-07-10 14:16:23 +0000
commit758acdd6082fe89a4bd96fe65a0d609d511ddda5 (patch)
treea1cfb924079046b0b18347c434c281369fd860e7 /sw/source/filter/ww8/ww8par.cxx
parent627d1722892b2969373836c74c84f25995c4b112 (diff)
fix fdo#77844: header wrongly enabled from .doc
The LO page style needs page headers to be turned on if the corresponding .doc file section has a left (=even) page header or a first page header. However this should not be triggered in the case where a first page header is present but hidden due to the "different first page" header option being disabled. This case is fixed by this commit. Change-Id: If3de0df45378587fdbdecc6a091d2f4b60940b43 Reviewed-on: https://gerrit.libreoffice.org/10100 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit f312ef98de57a5926be67421395544bb9d41b809) Signed-off-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit 025a9cf3a8ceba61d8424d7dcb029ab9607a0d73) Reviewed-on: https://gerrit.libreoffice.org/10168 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw/source/filter/ww8/ww8par.cxx')
-rw-r--r--sw/source/filter/ww8/ww8par.cxx15
1 files changed, 13 insertions, 2 deletions
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index c3e29c30deb0..21ee239dfbd9 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -2375,6 +2375,9 @@ void SwWW8ImplReader::Read_HdFt(int nSect, const SwPageDesc *pPrev,
long nLen;
sal_uInt8 nNumber = 5;
+ // This loops through the 6 flags WW8_{FOOTER,HEADER}_{ODD,EVEN,FIRST}
+ // corresponding to bit fields in grpfIhdt indicating which
+ // header/footer(s) are present in this section
for( sal_uInt8 nI = 0x20; nI; nI >>= 1, nNumber-- )
{
if (nI & grpfIhdt)
@@ -2392,6 +2395,12 @@ void SwWW8ImplReader::Read_HdFt(int nSect, const SwPageDesc *pPrev,
= (nI & ( WW8_HEADER_EVEN | WW8_FOOTER_EVEN )) ? true: false;
bool bUseFirst
= (nI & ( WW8_HEADER_FIRST | WW8_FOOTER_FIRST )) ? true: false;
+
+ // If we are loading a first-page header/footer which is not
+ // actually enabled in this section (it still needs to be
+ // loaded as it may be inherited by a later section)
+ bool bDisabledFirst = bUseFirst && !rSection.HasTitlePage();
+
bool bFooter
= (nI & ( WW8_FOOTER_EVEN | WW8_FOOTER_ODD | WW8_FOOTER_FIRST )) ? true: false;
@@ -2406,7 +2415,8 @@ void SwWW8ImplReader::Read_HdFt(int nSect, const SwPageDesc *pPrev,
{
bIsFooter = true;
//#i17196# Cannot have left without right
- if (!pPD->GetMaster().GetFooter().GetFooterFmt())
+ if (!bDisabledFirst
+ && !pPD->GetMaster().GetFooter().GetFooterFmt())
pPD->GetMaster().SetFmtAttr(SwFmtFooter(true));
if (bUseLeft)
pPD->GetLeft().SetFmtAttr(SwFmtFooter(true));
@@ -2418,7 +2428,8 @@ void SwWW8ImplReader::Read_HdFt(int nSect, const SwPageDesc *pPrev,
{
bIsHeader = true;
//#i17196# Cannot have left without right
- if (!pPD->GetMaster().GetHeader().GetHeaderFmt())
+ if (!bDisabledFirst
+ && !pPD->GetMaster().GetHeader().GetHeaderFmt())
pPD->GetMaster().SetFmtAttr(SwFmtHeader(true));
if (bUseLeft)
pPD->GetLeft().SetFmtAttr(SwFmtHeader(true));