summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Dominguez <venccsralph@gmail.com>2012-06-28 22:36:16 -0430
committerRafael Dominguez <venccsralph@gmail.com>2012-06-28 22:36:16 -0430
commitf0bbbb4b7acb8174dd1f954906a823552b95eff1 (patch)
tree54581871684140198012c1a366be8e93905dcf32
parentc6aab78b31d55ce1554b74acd346f1a4bfd4f348 (diff)
Display correct items when scrolling.
Change-Id: I7c3fd82c81711ae48dd8a7000cda83a133586e3c
-rw-r--r--sfx2/source/control/templateview.cxx2
-rw-r--r--sfx2/source/control/thumbnailview.cxx56
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();