diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index 2065d8078..f360c7f22 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -562,6 +562,16 @@ TrackView::paintEvent( QPaintEvent* event ) } +void +TrackView::wheelEvent( QWheelEvent* event ) +{ + QTreeView::wheelEvent( event ); + + m_delegate->resetHoverIndex(); + repaint(); +} + + void TrackView::onFilterChanged( const QString& ) { diff --git a/src/libtomahawk/playlist/TrackView.h b/src/libtomahawk/playlist/TrackView.h index ef6a91717..a793f6d16 100644 --- a/src/libtomahawk/playlist/TrackView.h +++ b/src/libtomahawk/playlist/TrackView.h @@ -113,6 +113,7 @@ protected: virtual void paintEvent( QPaintEvent* event ); virtual void keyPressEvent( QKeyEvent* event ); + virtual void wheelEvent( QWheelEvent* event ); protected slots: virtual void currentChanged( const QModelIndex& current, const QModelIndex& previous ); diff --git a/src/libtomahawk/playlist/TreeView.cpp b/src/libtomahawk/playlist/TreeView.cpp index 657a2efab..7116e3c55 100644 --- a/src/libtomahawk/playlist/TreeView.cpp +++ b/src/libtomahawk/playlist/TreeView.cpp @@ -53,6 +53,7 @@ TreeView::TreeView( QWidget* parent ) , m_overlay( new OverlayWidget( this ) ) , m_model( 0 ) , m_proxyModel( 0 ) + , m_delegate( 0 ) , m_loadingSpinner( new LoadingSpinner( this ) ) , m_updateContextView( true ) , m_contextMenu( new ContextMenu( this ) ) @@ -99,9 +100,9 @@ void TreeView::setProxyModel( TreeProxyModel* model ) { m_proxyModel = model; - TreeItemDelegate* del = new TreeItemDelegate( this, m_proxyModel ); - connect( del, SIGNAL( updateIndex( QModelIndex ) ), this, SLOT( update( QModelIndex ) ) ); - setItemDelegate( del ); + m_delegate = new TreeItemDelegate( this, m_proxyModel ); + connect( m_delegate, SIGNAL( updateIndex( QModelIndex ) ), SLOT( update( QModelIndex ) ) ); + setItemDelegate( m_delegate ); QTreeView::setModel( m_proxyModel ); } @@ -285,6 +286,16 @@ TreeView::resizeEvent( QResizeEvent* event ) } +void +TreeView::wheelEvent( QWheelEvent* event ) +{ + QTreeView::wheelEvent( event ); + + m_delegate->resetHoverIndex(); + repaint(); +} + + void TreeView::onFilterChangeFinished() { diff --git a/src/libtomahawk/playlist/TreeView.h b/src/libtomahawk/playlist/TreeView.h index 222e3da80..5b07f50bb 100644 --- a/src/libtomahawk/playlist/TreeView.h +++ b/src/libtomahawk/playlist/TreeView.h @@ -40,6 +40,7 @@ class ViewHeader; class AnimatedSpinner; class OverlayWidget; class TreeModel; +class TreeItemDelegate; class DLLEXPORT TreeView : public QTreeView { @@ -79,6 +80,7 @@ protected: virtual void resizeEvent( QResizeEvent* event ); virtual void keyPressEvent( QKeyEvent* event ); + virtual void wheelEvent( QWheelEvent* event ); protected slots: virtual void currentChanged( const QModelIndex& current, const QModelIndex& previous ); @@ -97,6 +99,7 @@ private: OverlayWidget* m_overlay; TreeModel* m_model; TreeProxyModel* m_proxyModel; + TreeItemDelegate* m_delegate; AnimatedSpinner* m_loadingSpinner; bool m_updateContextView;