diff options
author | Michael Stahl <mst@openoffice.org> | 2012-07-24 11:21:12 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-07-24 11:37:40 +0200 |
commit | 84052694960b34371e9e82ce3c8fbcdc3d1ab9d8 (patch) | |
tree | 59339a8deca6c466147826d9d77ac4f57c780a29 | |
parent | 3536fcd999f16525f20a1fff5c2512b565511d7b (diff) |
better page descriptor handling in RTF
Change-Id: I88384cf3a059c9988499b63512aafd411cf0dd9a
-rw-r--r-- | sw/source/filter/rtf/swparrtf.cxx | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx index 8b53d6db4daf..c210149fe91c 100644 --- a/sw/source/filter/rtf/swparrtf.cxx +++ b/sw/source/filter/rtf/swparrtf.cxx @@ -3233,6 +3233,7 @@ void SwRTFParser::ReadPageDescTbl() sal_uInt16 nCols = USHRT_MAX, nColSpace = USHRT_MAX, nAktCol = 0; std::vector<sal_uInt16> aColumns; + ::std::map< const SwPageDesc*, sal_uInt16 > aFollowMap; //store index of following page descriptors while( nNumOpenBrakets && IsParserWorking() ) { @@ -3295,10 +3296,9 @@ void SwRTFParser::ReadPageDescTbl() break; case RTF_PGDSCNXT: - // setze erstmal nur die Nummer als Follow. Am Ende der - // Tabelle wird diese entsprechend korrigiert !! + // store index of follow in map; will be fixed up later if( nTokenValue ) - pPg->SetFollow( (const SwPageDesc*)nTokenValue ); + aFollowMap.insert( ::std::pair<const SwPageDesc*, sal_uInt16>( pPg, nTokenValue )); else pPg->SetFollow( &pDoc->GetPageDesc( 0 ) ); break; @@ -3466,9 +3466,13 @@ void SwRTFParser::ReadPageDescTbl() for( nPos = 0; nPos < pDoc->GetPageDescCnt(); ++nPos ) { SwPageDesc* pPgDsc = &pDoc->GetPageDesc( nPos ); - if( (sal_uInt16)(long)pPgDsc->GetFollow() < pDoc->GetPageDescCnt() ) - pPgDsc->SetFollow(& pDoc->GetPageDesc((sal_uInt16)(long) - pPgDsc->GetFollow())); + std::map< const SwPageDesc*, sal_uInt16 >::const_iterator aIter = + aFollowMap.find( pPgDsc ); + if (aIter != aFollowMap.end()) + { + if ((*aIter).second < pDoc->GetPageDescCnt()) + pPgDsc->SetFollow(& pDoc->GetPageDesc((*aIter).second)); + } } SetChkStyleAttr( bSaveChkStyleAttr ); |