diff options
author | Luke Deller <luke@deller.id.au> | 2014-07-06 23:19:18 +1000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2014-07-10 11:11:11 +0200 |
commit | 6d269e805f5cc395acd49e6f1288da5560784d9f (patch) | |
tree | 4729b9844f853ad88ac504ad7f3490a1c7b62e71 /sw/source | |
parent | 8325d47653063b64f09000d3fd6bea383e0c0e05 (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>
Diffstat (limited to 'sw/source')
-rw-r--r-- | sw/source/filter/ww8/ww8par.cxx | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 3755c8ff9989..e8b2dbc74286 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -2382,6 +2382,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) @@ -2399,6 +2402,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; @@ -2413,7 +2422,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)); @@ -2425,7 +2435,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)); |