diff options
author | Mihaela Kedikova <misheto@openoffice.org> | 2010-10-14 13:49:43 +0200 |
---|---|---|
committer | Mihaela Kedikova <misheto@openoffice.org> | 2010-10-14 13:49:43 +0200 |
commit | 281d75599812f39484df4124d5bcf0a5cc91f30b (patch) | |
tree | 8434bd52ccad09c7c52b806fe7bd492877160d2a /canvas/source/tools/pagemanager.cxx | |
parent | 5de58a084612c45d20b58ef95159c67b5df422bb (diff) | |
parent | 525de6f8eeac6e357167467da0f9a9448433bb25 (diff) |
tabcontrol: merge with DEV300_m89
Diffstat (limited to 'canvas/source/tools/pagemanager.cxx')
-rw-r--r-- | canvas/source/tools/pagemanager.cxx | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/canvas/source/tools/pagemanager.cxx b/canvas/source/tools/pagemanager.cxx index b867b432857c..b2a71bf86cd3 100644 --- a/canvas/source/tools/pagemanager.cxx +++ b/canvas/source/tools/pagemanager.cxx @@ -70,7 +70,8 @@ namespace canvas { maPages.push_back(pPage); FragmentSharedPtr pFragment(pPage->allocateSpace(rSize)); - maFragments.push_back(pFragment); + if (pFragment) + maFragments.push_back(pFragment); return pFragment; } @@ -124,34 +125,39 @@ namespace canvas FragmentContainer_t::const_iterator candidate(maFragments.begin()); while(candidate != aEnd) { - if(!((*candidate)->isNaked())) + if(*candidate && !((*candidate)->isNaked())) break; ++candidate; } - const ::basegfx::B2ISize& rSize((*candidate)->getSize()); - sal_uInt32 nMaxArea(rSize.getX()*rSize.getY()); - - FragmentContainer_t::const_iterator it(candidate); - while(it != aEnd) + if (candidate != aEnd) { - if(!((*it)->isNaked())) + const ::basegfx::B2ISize& rSize((*candidate)->getSize()); + sal_uInt32 nMaxArea(rSize.getX()*rSize.getY()); + + FragmentContainer_t::const_iterator it(candidate); + while(it != aEnd) { - const ::basegfx::B2ISize& rCandidateSize((*it)->getSize()); - const sal_uInt32 nArea(rCandidateSize.getX()*rCandidateSize.getY()); - if(nArea > nMaxArea) + if (*it && !((*it)->isNaked())) { - candidate=it; - nMaxArea=nArea; + const ::basegfx::B2ISize& rCandidateSize((*it)->getSize()); + const sal_uInt32 nArea(rCandidateSize.getX()*rCandidateSize.getY()); + if(nArea > nMaxArea) + { + candidate=it; + nMaxArea=nArea; + } } + + ++it; } - ++it; + // this does not erase the candidate, + // but makes it 'naked'... + (*candidate)->free(*candidate); } - - // this does not erase the candidate, - // but makes it 'naked'... - (*candidate)->free(*candidate); + else + break; } } |