sw/inc/pagedesc.hxx | 4 ++-- sw/source/core/inc/frmtool.hxx | 2 +- sw/source/core/layout/frmtool.cxx | 8 ++++++-- sw/source/core/layout/ftnfrm.cxx | 4 ++-- sw/source/core/layout/laycache.cxx | 2 +- sw/source/core/layout/newfrm.cxx | 3 ++- 6 files changed, 14 insertions(+), 9 deletions(-)
New commits: commit 37a5afbe98b8dad909f3a6dc7e815100835631ec Author: Miklos Vajna <[email protected]> Date: Wed Jul 4 10:43:56 2012 +0200 sw: tell InsertNewPage() if that'll be a first page And in that case we can unconditionally call GetFirstFmt(), as the SwPageDesc copying methods take care of the "shared first/right" setting already. With this, the layout handles HeaderIsSharedFirst and FooterIsSharedFirst correctly when the first page is the first physical page. Change-Id: Ib6d922aebaa1384856f79f2501dfbe087a74a20f diff --git a/sw/source/core/inc/frmtool.hxx b/sw/source/core/inc/frmtool.hxx index 04d740c..3444a17 100644 --- a/sw/source/core/inc/frmtool.hxx +++ b/sw/source/core/inc/frmtool.hxx @@ -101,7 +101,7 @@ long CalcRowRstHeight( SwLayoutFrm *pRow ); long CalcHeightWidthFlys( const SwFrm *pFrm ); SwPageFrm *InsertNewPage( SwPageDesc &rDesc, SwFrm *pUpper, - sal_Bool bOdd, sal_Bool bInsertEmpty, sal_Bool bFtn, + sal_Bool bOdd, bool bFirst, sal_Bool bInsertEmpty, sal_Bool bFtn, SwFrm *pSibling ); // connect Flys with page diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx index 2c33068..1f8576d 100644 --- a/sw/source/core/layout/frmtool.cxx +++ b/sw/source/core/layout/frmtool.cxx @@ -2695,12 +2695,16 @@ sal_uLong SqRt( BigInt nX ) /*************************************************************************/ SwPageFrm * InsertNewPage( SwPageDesc &rDesc, SwFrm *pUpper, - sal_Bool bOdd, sal_Bool bInsertEmpty, sal_Bool bFtn, + sal_Bool bOdd, bool bFirst, sal_Bool bInsertEmpty, sal_Bool bFtn, SwFrm *pSibling ) { SwPageFrm *pRet; SwDoc *pDoc = ((SwLayoutFrm*)pUpper)->GetFmt()->GetDoc(); - SwFrmFmt *pFmt = bOdd ? rDesc.GetRightFmt() : rDesc.GetLeftFmt(); + SwFrmFmt *pFmt = 0; + if (bFirst) + pFmt = rDesc.GetFirstFmt(); + else + pFmt = bOdd ? rDesc.GetRightFmt() : rDesc.GetLeftFmt(); //Wenn ich kein FrmFmt fuer die Seite gefunden habe, muss ich eben //eine Leerseite einfuegen. if ( !pFmt ) diff --git a/sw/source/core/layout/ftnfrm.cxx b/sw/source/core/layout/ftnfrm.cxx index 5f78c91..d469bd4 100644 --- a/sw/source/core/layout/ftnfrm.cxx +++ b/sw/source/core/layout/ftnfrm.cxx @@ -1646,7 +1646,7 @@ void SwFtnBossFrm::AppendFtn( SwCntntFrm *pRef, SwTxtFtn *pAttr ) { SwPageDesc *pDesc = pDoc->GetEndNoteInfo().GetPageDesc( *pDoc ); pPage = ::InsertNewPage( *pDesc, pPage->GetUpper(), - !pPage->OnRightPage(), sal_False, sal_True, 0 ); + !pPage->OnRightPage(), false, sal_False, sal_True, 0 ); pPage->SetEndNotePage( sal_True ); bChgPage = sal_True; } @@ -1690,7 +1690,7 @@ void SwFtnBossFrm::AppendFtn( SwCntntFrm *pRef, SwTxtFtn *pAttr ) { SwPageDesc *pDesc = pDoc->GetFtnInfo().GetPageDesc( *pDoc ); pPage = ::InsertNewPage( *pDesc, pPage->GetUpper(), - !pPage->OnRightPage(), sal_False, sal_True, pPage->GetNext() ); + !pPage->OnRightPage(), false, sal_False, sal_True, pPage->GetNext() ); bChgPage = sal_True; } else diff --git a/sw/source/core/layout/laycache.cxx b/sw/source/core/layout/laycache.cxx index 835d58f..8416c89 100644 --- a/sw/source/core/layout/laycache.cxx +++ b/sw/source/core/layout/laycache.cxx @@ -652,7 +652,7 @@ sal_Bool SwLayHelper::CheckInsertPage() bInsertEmpty = sal_True; } ::InsertNewPage( (SwPageDesc&)*pDesc, rpPage->GetUpper(), - bNextPageOdd, bInsertEmpty, sal_False, rpPage->GetNext() ); + bNextPageOdd, nPgNum == 1, bInsertEmpty, sal_False, rpPage->GetNext() ); if ( bEnd ) { OSL_ENSURE( rpPage->GetNext(), "No new page?" ); diff --git a/sw/source/core/layout/newfrm.cxx b/sw/source/core/layout/newfrm.cxx index 64755d5..96897ed 100644 --- a/sw/source/core/layout/newfrm.cxx +++ b/sw/source/core/layout/newfrm.cxx @@ -555,9 +555,10 @@ void SwRootFrm::Init( SwFrmFmt* pFmt ) if ( !pDesc ) pDesc = &pDoc->GetPageDesc( 0 ); const sal_Bool bOdd = !nPgNum || 0 != ( nPgNum % 2 ); + bool bFirst = !nPgNum || 1 == nPgNum; // Create a page and put it in the layout - SwPageFrm *pPage = ::InsertNewPage( *pDesc, this, bOdd, sal_False, sal_False, 0 ); + SwPageFrm *pPage = ::InsertNewPage( *pDesc, this, bOdd, bFirst, sal_False, sal_False, 0 ); // Find the first page in the Bodytext section. SwLayoutFrm *pLay = pPage->FindBodyCont(); commit 5f4302c14772009a675d4b5b333f11c87c2e65c3 Author: Miklos Vajna <[email protected]> Date: Wed Jul 4 10:22:42 2012 +0200 SwPageDesc: let IsHeaderShared() not affect IsHeaderSharedFirst() Change-Id: I23224f4b408e36a858cd8ce6b1cfbdaac2bf4b60 diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx index be9073c..e529c12 100644 --- a/sw/inc/pagedesc.hxx +++ b/sw/inc/pagedesc.hxx @@ -132,8 +132,8 @@ namespace nsUseOnPage const UseOnPage PD_MIRROR = 0x000F; const UseOnPage PD_HEADERSHARE = 0x0040; const UseOnPage PD_FOOTERSHARE = 0x0080; - const UseOnPage PD_NOHEADERSHARE = 0x00BF; // For internal use only. - const UseOnPage PD_NOFOOTERSHARE = 0x007F; // For internal use only. + const UseOnPage PD_NOHEADERSHARE = 0xFFBF; // For internal use only. + const UseOnPage PD_NOFOOTERSHARE = 0xFF7F; // For internal use only. const UseOnPage PD_HEADERSHAREFIRST = 0x0100; const UseOnPage PD_NOHEADERSHAREFIRST = 0xFEFF; const UseOnPage PD_FOOTERSHAREFIRST = 0x0200; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
