summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sfx2/templateabstractview.hxx2
-rw-r--r--include/sfx2/thumbnailview.hxx14
-rw-r--r--sfx2/source/control/templateabstractview.cxx3
-rw-r--r--sfx2/source/control/thumbnailview.cxx59
4 files changed, 47 insertions, 31 deletions
diff --git a/include/sfx2/templateabstractview.hxx b/include/sfx2/templateabstractview.hxx
index d85e45a21f52..14d58936acc6 100644
--- a/include/sfx2/templateabstractview.hxx
+++ b/include/sfx2/templateabstractview.hxx
@@ -131,7 +131,7 @@ protected:
virtual void OnItemDblClicked(ThumbnailViewItem *pItem) SAL_OVERRIDE;
- virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
+ virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE;
protected:
diff --git a/include/sfx2/thumbnailview.hxx b/include/sfx2/thumbnailview.hxx
index 7a04eb2daef2..bcf9e572fb05 100644
--- a/include/sfx2/thumbnailview.hxx
+++ b/include/sfx2/thumbnailview.hxx
@@ -259,7 +259,11 @@ protected:
virtual void Command( const CommandEvent& rCEvt ) SAL_OVERRIDE;
- virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
+ virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE;
+
+ virtual void PrePaint(vcl::RenderContext& rRenderContext) SAL_OVERRIDE;
+
+ virtual void PostPaint(vcl::RenderContext& rRenderContext) SAL_OVERRIDE;
virtual void GetFocus() SAL_OVERRIDE;
@@ -330,9 +334,11 @@ protected:
Color maColor;
Link<> maItemStateHdl;
- ThumbnailItemAttributes *mpItemAttrs;
- drawinglayer::processor2d::BaseProcessor2D *mpProcessor;
- boost::function<bool (const ThumbnailViewItem*) > maFilterFunc;
+ ThumbnailItemAttributes* mpItemAttrs;
+
+ std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> mpProcessor;
+
+ boost::function<bool (const ThumbnailViewItem*)> maFilterFunc;
};
#endif // INCLUDED_SFX2_THUMBNAILVIEW_HXX
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx
index 3ffb69c599be..fdf246a44e0f 100644
--- a/sfx2/source/control/templateabstractview.cxx
+++ b/sfx2/source/control/templateabstractview.cxx
@@ -305,7 +305,8 @@ void TemplateAbstractView::Paint(vcl::RenderContext& rRenderContext, const Recta
ThumbnailView::Paint(rRenderContext, rRect);
Rectangle aRect(rRect.TopLeft(),
- Point(rRect.BottomRight().X(), mnHeaderHeight));
+ Point(rRect.BottomRight().X(),
+ mnHeaderHeight));
drawinglayer::primitive2d::Primitive2DSequence aSeq(1);
aSeq[0] = drawinglayer::primitive2d::Primitive2DReference(
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 6fbd97d75eaa..d5a14b223886 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -80,7 +80,6 @@ void ThumbnailView::dispose()
mpScrBar.disposeAndClear();
delete mpItemAttrs;
- delete mpProcessor;
ImplDeleteItems();
Control::dispose();
@@ -134,28 +133,24 @@ void ThumbnailView::AppendItem(ThumbnailViewItem *pItem)
void ThumbnailView::ImplInit()
{
- mpScrBar = NULL;
- mnHeaderHeight = 0;
- mnItemWidth = 0;
- mnItemHeight = 0;
- mnItemPadding = 0;
- mnVisLines = 0;
- mnLines = 0;
- mnFineness = 5;
- mnFirstLine = 0;
- mnCols = 0;
- mbScroll = false;
- mbHasVisibleItems = false;
- mbShowTooltips = false;
+ mpScrBar = NULL;
+ mnHeaderHeight = 0;
+ mnItemWidth = 0;
+ mnItemHeight = 0;
+ mnItemPadding = 0;
+ mnVisLines = 0;
+ mnLines = 0;
+ mnFineness = 5;
+ mnFirstLine = 0;
+ mnCols = 0;
+ mbScroll = false;
+ mbHasVisibleItems = false;
+ mbShowTooltips = false;
maFilterFunc = ViewFilterAll();
maColor = GetSettings().GetStyleSettings().GetFieldColor();
mpStartSelRange = mFilteredItemList.end();
- // Create the processor and process the primitives
- const drawinglayer::geometry::ViewInformation2D aNewViewInfos;
- mpProcessor = drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos );
-
- ImplInitSettings( true, true, true );
+ ImplInitSettings(true, true, true);
}
void ThumbnailView::ImplDeleteItems()
@@ -248,14 +243,14 @@ void ThumbnailView::ImplInitScrollBar()
}
}
-void ThumbnailView::DrawItem (ThumbnailViewItem *pItem)
+void ThumbnailView::DrawItem(ThumbnailViewItem *pItem)
{
if (pItem->isVisible())
{
Rectangle aRect = pItem->getDrawArea();
- if ( (aRect.GetHeight() > 0) && (aRect.GetWidth() > 0) )
- pItem->Paint(mpProcessor,mpItemAttrs);
+ if ((aRect.GetHeight() > 0) && (aRect.GetWidth() > 0))
+ pItem->Paint(mpProcessor.get(), mpItemAttrs);
}
}
@@ -858,14 +853,14 @@ void ThumbnailView::Command( const CommandEvent& rCEvt )
Control::Command( rCEvt );
}
-void ThumbnailView::Paint(vcl::RenderContext& /*rRenderContext*/, const Rectangle &aRect)
+void ThumbnailView::Paint(vcl::RenderContext& /*rRenderContext*/, const Rectangle& rRect)
{
size_t nItemCount = mItemList.size();
// Draw background
drawinglayer::primitive2d::Primitive2DSequence aSeq(1);
aSeq[0] = drawinglayer::primitive2d::Primitive2DReference(new PolyPolygonColorPrimitive2D(
- B2DPolyPolygon(Polygon(aRect, 5, 5).getB2DPolygon()),
+ B2DPolyPolygon(Polygon(rRect, 5, 5).getB2DPolygon()),
maColor.getBColor()));
mpProcessor->process(aSeq);
@@ -876,11 +871,25 @@ void ThumbnailView::Paint(vcl::RenderContext& /*rRenderContext*/, const Rectangl
ThumbnailViewItem *const pItem = mItemList[i];
if (pItem->isVisible())
+ {
DrawItem(pItem);
+ }
}
if (mpScrBar && mpScrBar->IsVisible())
- mpScrBar->Invalidate(aRect);
+ mpScrBar->Invalidate(rRect);
+}
+
+void ThumbnailView::PrePaint(vcl::RenderContext& rRenderContext)
+{
+ // Create the processor and process the primitives
+ const drawinglayer::geometry::ViewInformation2D aNewViewInfos;
+ mpProcessor.reset(drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(rRenderContext, aNewViewInfos));
+}
+
+void ThumbnailView::PostPaint(vcl::RenderContext& /*rRenderContext*/)
+{
+ mpProcessor.reset();
}
void ThumbnailView::GetFocus()