sfx2/inc/sfx2/thumbnailviewitem.hxx | 1 sfx2/source/control/thumbnailview.cxx | 55 ++++++++++++++++++++++++++---- sfx2/source/control/thumbnailviewitem.cxx | 1 3 files changed, 50 insertions(+), 7 deletions(-)
New commits: commit 8b1f29815022100e853d6c646838e52f83b4d548 Author: Rafael Dominguez <[email protected]> Date: Wed Jun 13 05:42:31 2012 -0430 Highlight item on mouse hover. Change-Id: I5f838f045dd4182803820516cfb6b706a6c4fe02 diff --git a/sfx2/inc/sfx2/thumbnailviewitem.hxx b/sfx2/inc/sfx2/thumbnailviewitem.hxx index f878494..a84e209 100644 --- a/sfx2/inc/sfx2/thumbnailviewitem.hxx +++ b/sfx2/inc/sfx2/thumbnailviewitem.hxx @@ -44,6 +44,7 @@ struct ThumbnailViewItem sal_uInt16 mnId; bool mbVisible; bool mbSelected; + bool mbHover; Image maImage; rtl::OUString maText; ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >* mpxAcc; diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx index 44d0f7d..3fcba83 100644 --- a/sfx2/source/control/thumbnailview.cxx +++ b/sfx2/source/control/thumbnailview.cxx @@ -322,7 +322,7 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect) maVirDev.DrawRect( aRect ); - if ( pItem->mbSelected ) + if ( pItem->mbSelected || pItem->mbHover ) { Rectangle aSelRect = aRect; Color aDoubleColor( rStyleSettings.GetHighlightColor() ); @@ -992,7 +992,10 @@ void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt ) if ( rMEvt.GetClicks() == 1 ) { pItem->mbSelected = !pItem->mbSelected; - DrawItem(pItem,GetItemRect(pItem->mnId)); + + if (!pItem->mbHover) + DrawItem(pItem,GetItemRect(pItem->mnId)); + //StartTracking( STARTTRACK_SCROLLREPEAT ); } else if ( rMEvt.GetClicks() == 2 ) @@ -1014,6 +1017,32 @@ void ThumbnailView::MouseButtonUp( const MouseEvent& rMEvt ) void ThumbnailView::MouseMove( const MouseEvent& rMEvt ) { + ThumbnailViewItem* pItem = ImplGetItem( ImplGetItem( rMEvt.GetPosPixel() ) ); + + if (pItem) + { + if (mnHighItemId != pItem->mnId) + { + size_t nPos = GetItemPos(mnHighItemId); + + if (nPos != THUMBNAILVIEW_ITEM_NOTFOUND) + { + ThumbnailViewItem *pOld = mItemList[nPos]; + + pOld->mbHover = false; + + if (!pOld->mbSelected) + DrawItem(pOld,GetItemRect(pOld->mnId)); + } + + mnHighItemId = pItem->mnId; + pItem->mbHover = true; + + if (!pItem->mbSelected) + DrawItem(pItem,GetItemRect(pItem->mnId)); + } + } + Control::MouseMove( rMEvt ); } @@ -1173,7 +1202,6 @@ void ThumbnailView::Paint( const Rectangle& ) void ThumbnailView::GetFocus() { - ImplDrawSelect(); Control::GetFocus(); // Tell the accessible object that we got the focus. @@ -1184,10 +1212,23 @@ void ThumbnailView::GetFocus() void ThumbnailView::LoseFocus() { - if ( mbNoSelection && mnSelItemId ) - ImplHideSelect( mnSelItemId ); - else - HideFocus(); + if (mnHighItemId) + { + size_t nPos = GetItemPos(mnHighItemId); + + if (nPos != THUMBNAILVIEW_ITEM_NOTFOUND) + { + ThumbnailViewItem *pOld = mItemList[nPos]; + + pOld->mbHover = false; + + if (!pOld->mbSelected) + DrawItem(pOld,GetItemRect(pOld->mnId)); + } + + mnHighItemId = 0; + } + Control::LoseFocus(); // Tell the accessible object that we lost the focus. diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx index 1d9aa07..915ee5a 100644 --- a/sfx2/source/control/thumbnailviewitem.cxx +++ b/sfx2/source/control/thumbnailviewitem.cxx @@ -38,6 +38,7 @@ ThumbnailViewItem::ThumbnailViewItem( ThumbnailView& rParent ) , mnId(0) , mbVisible(true) , mbSelected(false) + , mbHover(false) , mpxAcc(NULL) { } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
