diff options
-rw-r--r-- | include/sfx2/templateabstractview.hxx | 2 | ||||
-rw-r--r-- | include/sfx2/thumbnailview.hxx | 14 | ||||
-rw-r--r-- | sfx2/source/control/templateabstractview.cxx | 3 | ||||
-rw-r--r-- | sfx2/source/control/thumbnailview.cxx | 59 |
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() |