Kaydet (Commit) d1aaa23c authored tarafından Miklos Vajna's avatar Miklos Vajna

sw layout: fix first page header/footer insertion

Change-Id: I1d0051d0b9db486326f1ac7908d29af63f1f1726
üst 4c912d3d
......@@ -924,6 +924,10 @@ sal_Bool SwFrm::WrongPageDesc( SwPageFrm* pNew )
: pNew->OnRightPage();
if ( !pDesc )
pDesc = pNew->FindPageDesc();
SwPageFrm* pPrevFrm = dynamic_cast<SwPageFrm*>(pNew->GetPrev());
bool bFirst = pPrevFrm && pPrevFrm->GetPageDesc() != pDesc && !pDesc->IsFirstShared();
const SwFlowFrm *pNewFlow = pNew->FindFirstBodyCntnt();
// Did we find ourselves?
if( pNewFlow == pFlow )
......@@ -934,7 +938,7 @@ sal_Bool SwFrm::WrongPageDesc( SwPageFrm* pNew )
? pNewFlow->GetFrm()->GetAttrSet()->GetPageDesc().GetPageDesc():0;
return ( pNew->GetPageDesc() != pDesc || // own desc ?
pNew->GetFmt() != (bOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt()) ||
pNew->GetFmt() != (bFirst ? pDesc->GetFirstFmt() : (bOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt())) ||
( pNewDesc && pNewDesc == pDesc ) );
}
......
......@@ -1105,8 +1105,13 @@ void SwFrm::CheckPageDescs( SwPageFrm *pStart, sal_Bool bNotifyFields )
sal_Bool bCheckEmpty = pPage->IsEmptyPage();
sal_Bool bActOdd = pPage->OnRightPage();
sal_Bool bOdd = pPage->WannaRightPage();
SwFrmFmt *pFmtWish = bOdd ? pDesc->GetRightFmt()
: pDesc->GetLeftFmt();
SwPageFrm* pPrevFrm = dynamic_cast<SwPageFrm*>(pPage->GetPrev());
bool bFirst = pPrevFrm && pPrevFrm->GetPageDesc() != pPage->GetPageDesc() && !pDesc->IsFirstShared();
SwFrmFmt *pFmtWish = 0;
if (bFirst)
pFmtWish = pDesc->GetFirstFmt();
else
pFmtWish = bOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt();
if ( bActOdd != bOdd ||
pDesc != pPage->GetPageDesc() || //falscher Desc
......@@ -1315,6 +1320,9 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, sal_Bool bFtn )
OSL_ENSURE( pDesc, "Missing PageDesc" );
if( !(bWishedOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt()) )
bWishedOdd = !bWishedOdd;
bool bWishedFirst = pDesc != pPrevPage->GetPageDesc();
if (bWishedFirst && !pDesc->GetFirstFmt())
bWishedFirst = false;
SwDoc *pDoc = pPrevPage->GetFmt()->GetDoc();
SwFrmFmt *pFmt;
......@@ -1342,7 +1350,10 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, sal_Bool bFtn )
else
bCheckPages = sal_True;
}
pFmt = bWishedOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt();
if (bWishedFirst && !pDesc->IsFirstShared())
pFmt = pDesc->GetFirstFmt();
else
pFmt = bWishedOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt();
OSL_ENSURE( pFmt, "Descriptor without format." );
SwPageFrm *pPage = new SwPageFrm( pFmt, pRoot, pDesc );
pPage->Paste( pRoot, pSibling );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment