Kaydet (Commit) c3366bc7 authored tarafından Oliver-Rainer Wittmann's avatar Oliver-Rainer Wittmann Kaydeden (comit) Caolán McNamara

Resolves: fdo#65139# #i122416# SwDoc::GetPageDescFromPool correction

and refactoring

(cherry picked from commit 384aa00b)

Conflicts:
	sw/source/core/doc/poolfmt.cxx

Change-Id: Ia5567173153e218b754ad73c50b56eff87b49822
üst 301cfb7a
...@@ -1405,7 +1405,7 @@ bool SwDoc::IsPoolFmtUsed( sal_uInt16 nId ) const ...@@ -1405,7 +1405,7 @@ bool SwDoc::IsPoolFmtUsed( sal_uInt16 nId ) const
static void lcl_GetStdPgSize( SwDoc* pDoc, SfxItemSet& rSet ) static void lcl_PutStdPageSizeIntoItemSet( SwDoc* pDoc, SfxItemSet& rSet )
{ {
SwPageDesc* pStdPgDsc = pDoc->GetPageDescFromPool( RES_POOLPAGE_STANDARD ); SwPageDesc* pStdPgDsc = pDoc->GetPageDescFromPool( RES_POOLPAGE_STANDARD );
SwFmtFrmSize aFrmSz( pStdPgDsc->GetMaster().GetFrmSize() ); SwFmtFrmSize aFrmSz( pStdPgDsc->GetMaster().GetFrmSize() );
...@@ -1423,52 +1423,58 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1423,52 +1423,58 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
OSL_ENSURE( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END, OSL_ENSURE( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END,
"Wrong AutoFormat Id" ); "Wrong AutoFormat Id" );
SwPageDesc *pNewPgDsc; for( sal_uInt16 n = 0; n < maPageDescs.size(); ++n )
sal_uInt16 n; {
if ( nId == maPageDescs[ n ]->GetPoolFmtId() )
for( n = 0; n < maPageDescs.size(); ++n )
if( nId == ( pNewPgDsc = maPageDescs[ n ] )->GetPoolFmtId() )
{ {
return pNewPgDsc; return maPageDescs[ n ];
} }
}
// error: unknown Pool style
if( RES_POOLPAGE_BEGIN > nId || nId >= RES_POOLPAGE_END ) if( RES_POOLPAGE_BEGIN > nId || nId >= RES_POOLPAGE_END )
{ {
OSL_ENSURE( !this, "invalid Id" ); // unknown page pool ID
OSL_ENSURE( !this, "<SwDoc::GetPageDescFromPool(..)> - unknown page pool ID" );
nId = RES_POOLPAGE_BEGIN; nId = RES_POOLPAGE_BEGIN;
} }
ResId aResId( sal_uInt32(RC_POOLPAGEDESC_BEGIN + nId - RES_POOLPAGE_BEGIN), *pSwResMgr ); SwPageDesc* pNewPgDsc = 0;
String aNm( aResId );
{ {
bool bIsModified = IsModified(); const ResId aResId( sal_uInt32(RC_POOLPAGEDESC_BEGIN + nId - RES_POOLPAGE_BEGIN), *pSwResMgr );
const String aNm( aResId );
const bool bIsModified = IsModified();
sal_uInt16 nPageDescIdx = 0;
{ {
::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo()); ::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo());
n = MakePageDesc( aNm, 0, bRegardLanguage ); nPageDescIdx = MakePageDesc( aNm, 0, bRegardLanguage );
} }
pNewPgDsc = maPageDescs[ n ]; pNewPgDsc = maPageDescs[ nPageDescIdx ];
pNewPgDsc->SetPoolFmtId( nId ); pNewPgDsc->SetPoolFmtId( nId );
if( !bIsModified ) if ( !bIsModified )
{
ResetModified(); ResetModified();
}
} }
SvxLRSpaceItem aLR( RES_LR_SPACE ); SvxLRSpaceItem aLR( RES_LR_SPACE );
aLR.SetLeft( GetMetricVal( CM_1 ) * 2 ); {
aLR.SetRight( aLR.GetLeft() ); aLR.SetLeft( GetMetricVal( CM_1 ) * 2 );
aLR.SetRight( aLR.GetLeft() );
}
SvxULSpaceItem aUL( RES_UL_SPACE ); SvxULSpaceItem aUL( RES_UL_SPACE );
aUL.SetUpper( (sal_uInt16)aLR.GetLeft() ); {
aUL.SetLower( (sal_uInt16)aLR.GetLeft() ); aUL.SetUpper( (sal_uInt16)aLR.GetLeft() );
aUL.SetLower( (sal_uInt16)aLR.GetLeft() );
}
SwAttrSet aSet( GetAttrPool(), aPgFrmFmtSetRange ); SwAttrSet aSet( GetAttrPool(), aPgFrmFmtSetRange );
bool bSetLeft = true; bool bSetLeft = true;
switch( nId ) switch( nId )
{ {
case RES_POOLPAGE_STANDARD: // Standard page case RES_POOLPAGE_STANDARD: // "Default"
{ {
aSet.Put( aLR ); aSet.Put( aLR );
aSet.Put( aUL ); aSet.Put( aUL );
...@@ -1477,10 +1483,10 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1477,10 +1483,10 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
} }
break; break;
case RES_POOLPAGE_FIRST: // First page case RES_POOLPAGE_FIRST: // "First Page"
case RES_POOLPAGE_REGISTER: // ToX case RES_POOLPAGE_REGISTER: // "Index"
{ {
lcl_GetStdPgSize( this, aSet ); lcl_PutStdPageSizeIntoItemSet( this, aSet );
aSet.Put( aLR ); aSet.Put( aLR );
aSet.Put( aUL ); aSet.Put( aUL );
if( pNewPgDsc ) if( pNewPgDsc )
...@@ -1492,9 +1498,9 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1492,9 +1498,9 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
} }
break; break;
case RES_POOLPAGE_LEFT: // Left page case RES_POOLPAGE_LEFT: // "Left Page"
{ {
lcl_GetStdPgSize( this, aSet ); lcl_PutStdPageSizeIntoItemSet( this, aSet );
aSet.Put( aLR ); aSet.Put( aLR );
aSet.Put( aUL ); aSet.Put( aUL );
bSetLeft = false; bSetLeft = false;
...@@ -1507,9 +1513,9 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1507,9 +1513,9 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
} }
} }
break; break;
case RES_POOLPAGE_RIGHT: // Right page case RES_POOLPAGE_RIGHT: // "Right Page"
{ {
lcl_GetStdPgSize( this, aSet ); lcl_PutStdPageSizeIntoItemSet( this, aSet );
aSet.Put( aLR ); aSet.Put( aLR );
aSet.Put( aUL ); aSet.Put( aUL );
bSetLeft = false; bSetLeft = false;
...@@ -1521,13 +1527,13 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1521,13 +1527,13 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
} }
break; break;
case RES_POOLPAGE_JAKET: // envelope case RES_POOLPAGE_JAKET: // "Envelope"
{ {
aLR.SetLeft( 0 ); aLR.SetRight( 0 );
aUL.SetUpper( 0 ); aUL.SetLower( 0 );
Size aPSize( SvxPaperInfo::GetPaperSize( PAPER_ENV_C65 ) ); Size aPSize( SvxPaperInfo::GetPaperSize( PAPER_ENV_C65 ) );
LandscapeSwap( aPSize ); LandscapeSwap( aPSize );
aSet.Put( SwFmtFrmSize( ATT_FIX_SIZE, aPSize.Width(), aPSize.Height() )); aSet.Put( SwFmtFrmSize( ATT_FIX_SIZE, aPSize.Width(), aPSize.Height() ));
aLR.SetLeft( 0 ); aLR.SetRight( 0 );
aUL.SetUpper( 0 ); aUL.SetLower( 0 );
aSet.Put( aLR ); aSet.Put( aLR );
aSet.Put( aUL ); aSet.Put( aUL );
...@@ -1539,9 +1545,9 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1539,9 +1545,9 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
} }
break; break;
case RES_POOLPAGE_HTML: // HTML case RES_POOLPAGE_HTML: // "HTML"
{ {
lcl_GetStdPgSize( this, aSet ); lcl_PutStdPageSizeIntoItemSet( this, aSet );
aLR.SetRight( GetMetricVal( CM_1 )); aLR.SetRight( GetMetricVal( CM_1 ));
aUL.SetUpper( (sal_uInt16)aLR.GetRight() ); aUL.SetUpper( (sal_uInt16)aLR.GetRight() );
aUL.SetLower( (sal_uInt16)aLR.GetRight() ); aUL.SetLower( (sal_uInt16)aLR.GetRight() );
...@@ -1552,10 +1558,11 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1552,10 +1558,11 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL ); pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL );
} }
break; break;
case RES_POOLPAGE_FOOTNOTE:
case RES_POOLPAGE_ENDNOTE: case RES_POOLPAGE_FOOTNOTE: // "Footnote"
case RES_POOLPAGE_ENDNOTE: // "Endnote"
{ {
lcl_GetStdPgSize( this, aSet ); lcl_PutStdPageSizeIntoItemSet( this, aSet );
aSet.Put( aLR ); aSet.Put( aLR );
aSet.Put( aUL ); aSet.Put( aUL );
if( pNewPgDsc ) if( pNewPgDsc )
...@@ -1567,13 +1574,17 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1567,13 +1574,17 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
pNewPgDsc->SetFtnInfo( aInf ); pNewPgDsc->SetFtnInfo( aInf );
} }
break; break;
case RES_POOLPAGE_LANDSCAPE:
case RES_POOLPAGE_LANDSCAPE: // "Landscape"
{ {
SwPageDesc* pStdPgDsc = this->GetPageDescFromPool( RES_POOLPAGE_STANDARD ); SwPageDesc* pStdPgDsc = this->GetPageDescFromPool( RES_POOLPAGE_STANDARD );
SwFmtFrmSize aFrmSz( pStdPgDsc->GetMaster().GetFrmSize() ); SwFmtFrmSize aFrmSz( pStdPgDsc->GetMaster().GetFrmSize() );
SwTwips nTmp = aFrmSz.GetHeight(); if ( !pStdPgDsc->GetLandscape() )
aFrmSz.SetHeight( aFrmSz.GetWidth() ); {
aFrmSz.SetWidth( nTmp ); const SwTwips nTmp = aFrmSz.GetHeight();
aFrmSz.SetHeight( aFrmSz.GetWidth() );
aFrmSz.SetWidth( nTmp );
}
aSet.Put( aFrmSz ); aSet.Put( aFrmSz );
aSet.Put( aLR ); aSet.Put( aLR );
aSet.Put( aUL ); aSet.Put( aUL );
...@@ -1582,19 +1593,17 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage ) ...@@ -1582,19 +1593,17 @@ SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL ); pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL );
pNewPgDsc->SetLandscape( sal_True ); pNewPgDsc->SetLandscape( sal_True );
} }
} }
break; break;
} }
if( aSet.Count() ) if( aSet.Count() )
{ {
{ if( bSetLeft )
if( bSetLeft ) pNewPgDsc->GetLeft().SetFmtAttr( aSet );
pNewPgDsc->GetLeft().SetFmtAttr( aSet ); pNewPgDsc->GetMaster().SetFmtAttr( aSet );
pNewPgDsc->GetMaster().SetFmtAttr( aSet ); pNewPgDsc->GetFirst().SetFmtAttr( aSet );
pNewPgDsc->GetFirst().SetFmtAttr( aSet );
}
} }
return pNewPgDsc; return pNewPgDsc;
} }
......
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