From dffd614c3837d46a905470a5c87a7d439883073c Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser <muesli@gmail.com> Date: Tue, 15 Jan 2013 09:55:39 +0100 Subject: [PATCH] * Fixed memleak in drag & drop operations. --- src/libtomahawk/playlist/TrackView.cpp | 17 ++++++++++++++++- src/libtomahawk/playlist/TrackView.h | 14 +++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index cd1d9b255..1a0bd6894 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -449,6 +449,7 @@ TrackView::dragEnterEvent( QDragEnterEvent* event ) void TrackView::dragMoveEvent( QDragMoveEvent* event ) { + tDebug() << Q_FUNC_INFO; QTreeView::dragMoveEvent( event ); if ( model()->isReadOnly() ) @@ -488,9 +489,21 @@ TrackView::dragMoveEvent( QDragMoveEvent* event ) } +void +TrackView::dragLeaveEvent( QDragLeaveEvent* event ) +{ + tDebug() << Q_FUNC_INFO; + QTreeView::dragLeaveEvent( event ); + + m_dragging = false; + setDirtyRegion( m_dropRect ); +} + + void TrackView::dropEvent( QDropEvent* event ) { + tDebug() << Q_FUNC_INFO; QTreeView::dropEvent( event ); if ( event->isAccepted() ) @@ -499,7 +512,7 @@ TrackView::dropEvent( QDropEvent* event ) } else { - if ( DropJob::acceptsMimeData( event->mimeData()) ) + if ( DropJob::acceptsMimeData( event->mimeData() ) ) { const QPoint pos = event->pos(); const QModelIndex index = indexAt( pos ); @@ -609,6 +622,8 @@ TrackView::startDrag( Qt::DropActions supportedActions ) { m_proxyModel->removeIndexes( pindexes ); } + + delete drag; } diff --git a/src/libtomahawk/playlist/TrackView.h b/src/libtomahawk/playlist/TrackView.h index f0f5371bd..c9e091f0b 100644 --- a/src/libtomahawk/playlist/TrackView.h +++ b/src/libtomahawk/playlist/TrackView.h @@ -108,16 +108,16 @@ protected: virtual void startDrag( Qt::DropActions supportedActions ); virtual void dragEnterEvent( QDragEnterEvent* event ); - virtual void dragLeaveEvent( QDragLeaveEvent* /*event*/ ) { m_dragging = false; setDirtyRegion( m_dropRect ); } + virtual void dragLeaveEvent( QDragLeaveEvent* event ); virtual void dragMoveEvent( QDragMoveEvent* event ); virtual void dropEvent( QDropEvent* event ); - void wheelEvent( QWheelEvent* event ); - void mouseMoveEvent( QMouseEvent* event ); - void mousePressEvent( QMouseEvent* event ); - void leaveEvent( QEvent* event ); - void paintEvent( QPaintEvent* event ); - void keyPressEvent( QKeyEvent* event ); + virtual void wheelEvent( QWheelEvent* event ); + virtual void mouseMoveEvent( QMouseEvent* event ); + virtual void mousePressEvent( QMouseEvent* event ); + virtual void leaveEvent( QEvent* event ); + virtual void paintEvent( QPaintEvent* event ); + virtual void keyPressEvent( QKeyEvent* event ); protected slots: virtual void currentChanged( const QModelIndex& current, const QModelIndex& previous );