From 84193fdf2ce12bfa9098239c83613f1e13a6048a Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 10 Jun 2013 10:36:44 +0200 Subject: [PATCH] * Views handle leaveEvents now and inform the delegate to update itself when required. --- src/libtomahawk/playlist/GridView.cpp | 9 +++++++++ src/libtomahawk/playlist/GridView.h | 1 + src/libtomahawk/playlist/TrackView.cpp | 18 ++++++++++++++---- src/libtomahawk/playlist/TrackView.h | 1 + 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/playlist/GridView.cpp b/src/libtomahawk/playlist/GridView.cpp index 7e0fda64b..913fb5f6d 100644 --- a/src/libtomahawk/playlist/GridView.cpp +++ b/src/libtomahawk/playlist/GridView.cpp @@ -195,6 +195,15 @@ GridView::scrollContentsBy( int dx, int dy ) } +void +GridView::leaveEvent( QEvent* event ) +{ + QListView::leaveEvent( event ); + + m_delegate->resetHoverIndex(); +} + + void GridView::paintEvent( QPaintEvent* event ) { diff --git a/src/libtomahawk/playlist/GridView.h b/src/libtomahawk/playlist/GridView.h index 2419dce25..8b5de2c83 100644 --- a/src/libtomahawk/playlist/GridView.h +++ b/src/libtomahawk/playlist/GridView.h @@ -89,6 +89,7 @@ protected: virtual void startDrag( Qt::DropActions supportedActions ); virtual void scrollContentsBy( int dx, int dy ); + void leaveEvent( QEvent* event ); void paintEvent( QPaintEvent* event ); void resizeEvent( QResizeEvent* event ); void wheelEvent( QWheelEvent* ); diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index e9ca9a120..18a07adb2 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -166,8 +166,7 @@ TrackView::setProxyModel( PlayableProxyModel* model ) connect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), SLOT( verifySize() ) ); m_delegate = new PlaylistItemDelegate( this, m_proxyModel ); - setItemDelegate( m_delegate ); - + QTreeView::setItemDelegate( m_delegate ); QTreeView::setModel( m_proxyModel ); } @@ -184,8 +183,11 @@ TrackView::setModel( QAbstractItemModel* model ) void TrackView::setPlaylistItemDelegate( PlaylistItemDelegate* delegate ) { + if ( m_delegate ) + delete m_delegate; + m_delegate = delegate; - setItemDelegate( delegate ); + QTreeView::setItemDelegate( delegate ); verifySize(); } @@ -511,7 +513,6 @@ TrackView::dragMoveEvent( QDragMoveEvent* event ) void TrackView::dragLeaveEvent( QDragLeaveEvent* event ) { - tDebug() << Q_FUNC_INFO; QTreeView::dragLeaveEvent( event ); m_dragging = false; @@ -550,6 +551,15 @@ TrackView::dropEvent( QDropEvent* event ) } +void +TrackView::leaveEvent( QEvent* event ) +{ + QTreeView::leaveEvent( event ); + + m_delegate->resetHoverIndex(); +} + + void TrackView::paintEvent( QPaintEvent* event ) { diff --git a/src/libtomahawk/playlist/TrackView.h b/src/libtomahawk/playlist/TrackView.h index 2281c7999..0398c0dfa 100644 --- a/src/libtomahawk/playlist/TrackView.h +++ b/src/libtomahawk/playlist/TrackView.h @@ -113,6 +113,7 @@ protected: virtual void dragMoveEvent( QDragMoveEvent* event ); virtual void dropEvent( QDropEvent* event ); + virtual void leaveEvent( QEvent* event ); virtual void paintEvent( QPaintEvent* event ); virtual void keyPressEvent( QKeyEvent* event ); virtual void wheelEvent( QWheelEvent* event );