diff options
author | Jan Holesovsky <kendy@collabora.com> | 2013-12-13 11:35:57 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2013-12-13 13:01:29 +0100 |
commit | f655b23d57f234c0e92255302353f2a0a3fad487 (patch) | |
tree | 34bddfcbdd1765e9c814f3ee24af7672bdaa1edb | |
parent | b475a895c0b91a764d750146f9935e7c56ef7f42 (diff) |
startcenter: Implement mouse over effect.
Change-Id: I9beea6119dbb1c12ff053e5776f15d40a3389a8b
-rw-r--r-- | sfx2/source/control/thumbnailview.cxx | 35 | ||||
-rw-r--r-- | sfx2/source/control/thumbnailviewitem.cxx | 17 |
2 files changed, 37 insertions, 15 deletions
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx index 8c6a96107b03..137aeb07ba5d 100644 --- a/sfx2/source/control/thumbnailview.cxx +++ b/sfx2/source/control/thumbnailview.cxx @@ -83,27 +83,38 @@ ThumbnailView::~ThumbnailView() ImplDeleteItems(); } -void ThumbnailView::MouseMove( const MouseEvent& rMEvt ) +void ThumbnailView::MouseMove(const MouseEvent& rMEvt) { - if ( !mbShowTooltips ) - return; - - (void) rMEvt; // unused parameter - size_t nItemCount = mFilteredItemList.size(); - Point aPoint = GetPointerState().maPos; - OUString aHelp; + size_t nItemCount = mFilteredItemList.size(); + Point aPoint = GetPointerState().maPos; + OUString aHelp; - for ( size_t i = 0; i < nItemCount; i++ ) + for (size_t i = 0; i < nItemCount; i++) { + bool bNeedsPaint = false; ThumbnailViewItem *pItem = mFilteredItemList[i]; - if ( pItem->mbVisible && pItem->getDrawArea().IsInside(aPoint) ) + + if (pItem->mbVisible && !rMEvt.IsLeaveWindow() && pItem->getDrawArea().IsInside(aPoint)) { aHelp = pItem->maTitle; - break; + + if (!pItem->isHighlighted()) + bNeedsPaint = true; + pItem->setHighlight(true); } + else + { + if (pItem->isHighlighted()) + bNeedsPaint = true; + pItem->setHighlight(false); + } + + if (bNeedsPaint && IsReallyVisible() && IsUpdateMode()) + Invalidate(pItem->getDrawArea()); } - SetQuickHelpText(aHelp); + if (mbShowTooltips) + SetQuickHelpText(aHelp); } void ThumbnailView::AppendItem(ThumbnailViewItem *pItem) diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx index 9187515c0e11..6198f45710d4 100644 --- a/sfx2/source/control/thumbnailviewitem.cxx +++ b/sfx2/source/control/thumbnailviewitem.cxx @@ -37,6 +37,7 @@ #include <vcl/graph.hxx> #include <vcl/svapp.hxx> #include <vcl/texteng.hxx> +#include <svtools/optionsdrawinglayer.hxx> using namespace basegfx; using namespace basegfx::tools; @@ -245,15 +246,25 @@ void ThumbnailViewItem::Paint (drawinglayer::processor2d::BaseProcessor2D *pProc { BColor aFillColor = pAttrs->aFillColor; drawinglayer::primitive2d::Primitive2DSequence aSeq(4); + double fTransparence = 0.0; // Draw background - if ( mbSelected || mbHover ) + if (mbSelected || mbHover) aFillColor = pAttrs->aHighlightColor; + if (mbHover) + { + const SvtOptionsDrawinglayer aSvtOptionsDrawinglayer; + fTransparence = aSvtOptionsDrawinglayer.GetTransparentSelectionPercent() * 0.01; + } + sal_uInt32 nPrimitive = 0; - aSeq[nPrimitive++] = drawinglayer::primitive2d::Primitive2DReference( new PolyPolygonColorPrimitive2D( + aSeq[nPrimitive++] = drawinglayer::primitive2d::Primitive2DReference( new PolyPolygonSelectionPrimitive2D( B2DPolyPolygon(Polygon(maDrawArea,5,5).getB2DPolygon()), - aFillColor)); + aFillColor, + fTransparence, + 0.0, + true)); // Draw thumbnail Point aPos = maPrev1Pos; |