diff options
author | Rafael Dominguez <venccsralph@gmail.com> | 2012-06-28 22:36:16 -0430 |
---|---|---|
committer | Rafael Dominguez <venccsralph@gmail.com> | 2012-06-28 22:36:16 -0430 |
commit | f0bbbb4b7acb8174dd1f954906a823552b95eff1 (patch) | |
tree | 54581871684140198012c1a366be8e93905dcf32 | |
parent | c6aab78b31d55ce1554b74acd346f1a4bfd4f348 (diff) |
Display correct items when scrolling.
Change-Id: I7c3fd82c81711ae48dd8a7000cda83a133586e3c
-rw-r--r-- | sfx2/source/control/templateview.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/control/thumbnailview.cxx | 56 |
2 files changed, 5 insertions, 53 deletions
diff --git a/sfx2/source/control/templateview.cxx b/sfx2/source/control/templateview.cxx index 22e58db6cd2a..f0f0ed9244be 100644 --- a/sfx2/source/control/templateview.cxx +++ b/sfx2/source/control/templateview.cxx @@ -29,7 +29,7 @@ using namespace drawinglayer::attribute; using namespace drawinglayer::primitive2d; TemplateView::TemplateView (Window *pParent, SfxDocumentTemplates *pTemplates) - : ThumbnailView(pParent), + : ThumbnailView(pParent,WB_VSCROLL), maCloseImg(SfxResId(IMG_TEMPLATE_VIEW_CLOSE)), mnRegionId(0), mpDocTemplates(pTemplates) diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx index 517fb835fe07..243fe2c10930 100644 --- a/sfx2/source/control/thumbnailview.cxx +++ b/sfx2/source/control/thumbnailview.cxx @@ -296,6 +296,8 @@ void ThumbnailView::CalculateItemPositions () long y = nStartY; // draw items + size_t nFirstItem = mnFirstLine * mnCols; + size_t nLastItem = nFirstItem + (mnVisLines * mnCols); size_t nTotalItems = mnFirstLine*mnCols + mnVisLines*mnCols; maItemListRect.Left() = x; @@ -314,7 +316,7 @@ void ThumbnailView::CalculateItemPositions () { ThumbnailViewItem *const pItem = mItemList[i]; - if (maFilterFunc(pItem) && nCurCount < nTotalItems) + if ((i >= nFirstItem) && (i < nLastItem) && maFilterFunc(pItem) && nCurCount < nTotalItems) { if( !pItem->isVisible() && ImplHasAccessibleListeners() ) { @@ -498,57 +500,7 @@ IMPL_LINK( ThumbnailView,ImplScrollHdl, ScrollBar*, pScrollBar ) { mnFirstLine = nNewFirstLine; - // Recalculate item positions - Size aWinSize = GetOutputSizePixel(); - size_t nItemCount = mItemList.size(); - - // calculate offsets - long nStartX = 0; - long nStartY = 0; - - // calculate items - long x = nStartX; - long y = nStartY; - - // draw items - sal_uLong nFirstItem = mnFirstLine * mnCols; - sal_uLong nLastItem = nFirstItem + (mnVisLines * mnCols); - - // If want also draw parts of items in the last line, - // then we add one more line if parts of these line are - // visible - if ( y+(mnVisLines*(mnItemHeight+mnSpacing)) < aWinSize.Height() ) - nLastItem += mnCols; - - for ( size_t i = 0; i < nItemCount; i++ ) - { - ThumbnailViewItem *const pItem = mItemList[i]; - - if ( (i >= nFirstItem) && (i < nLastItem) ) - { - if (!mItemList[i]->isVisible()) - maItemStateHdl.Call(mItemList[i]); - - pItem->show(true); - pItem->setDrawArea(Rectangle( Point(x,y), Size(mnItemWidth, mnItemHeight) )); - pItem->calculateItemsPosition(mpItemAttrs->nMaxTextLenght); - - if ( !((i+1) % mnCols) ) - { - x = nStartX; - y += mnItemHeight+mnSpacing; - } - else - x += mnItemWidth+mnSpacing; - } - else - { - if (mItemList[i]->isVisible()) - maItemStateHdl.Call(mItemList[i]); - - pItem->show(false); - } - } + CalculateItemPositions(); if ( IsReallyVisible() && IsUpdateMode() ) Invalidate(); |