From f5aeeeb9c82a80e9bea4845b4f0efa5fad7e9371 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 7 Jun 2012 11:24:20 +0200 Subject: [PATCH] * OverlayWidget uses PlaylistView as an event-filter for Drag-n-Drop events. --- src/libtomahawk/playlist/PlaylistView.cpp | 32 +++++++++++++++++++++++ src/libtomahawk/playlist/PlaylistView.h | 1 + src/libtomahawk/widgets/OverlayWidget.cpp | 3 +++ 3 files changed, 36 insertions(+) diff --git a/src/libtomahawk/playlist/PlaylistView.cpp b/src/libtomahawk/playlist/PlaylistView.cpp index 5c8527754..ef62eca80 100644 --- a/src/libtomahawk/playlist/PlaylistView.cpp +++ b/src/libtomahawk/playlist/PlaylistView.cpp @@ -97,6 +97,38 @@ PlaylistView::keyPressEvent( QKeyEvent* event ) } +bool +PlaylistView::eventFilter( QObject* obj, QEvent* event ) +{ + if ( event->type() == QEvent::DragEnter ) + { + QDragEnterEvent* e = static_cast(event); + dragEnterEvent( e ); + return true; + } + if ( event->type() == QEvent::DragMove ) + { + QDragMoveEvent* e = static_cast(event); + dragMoveEvent( e ); + return true; + } + if ( event->type() == QEvent::DragLeave ) + { + QDragLeaveEvent* e = static_cast(event); + dragLeaveEvent( e ); + return true; + } + if ( event->type() == QEvent::Drop ) + { + QDropEvent* e = static_cast(event); + dropEvent( e ); + return true; + } + + return QObject::eventFilter( obj, event ); +} + + void PlaylistView::deleteItems() { diff --git a/src/libtomahawk/playlist/PlaylistView.h b/src/libtomahawk/playlist/PlaylistView.h index 48d7c6892..14140f4ad 100644 --- a/src/libtomahawk/playlist/PlaylistView.h +++ b/src/libtomahawk/playlist/PlaylistView.h @@ -50,6 +50,7 @@ signals: protected: void keyPressEvent( QKeyEvent* event ); + bool eventFilter( QObject* obj, QEvent* event ); private slots: void onMenuTriggered( int action ); diff --git a/src/libtomahawk/widgets/OverlayWidget.cpp b/src/libtomahawk/widgets/OverlayWidget.cpp index be455af57..d3e896d64 100644 --- a/src/libtomahawk/widgets/OverlayWidget.cpp +++ b/src/libtomahawk/widgets/OverlayWidget.cpp @@ -66,6 +66,9 @@ OverlayWidget::~OverlayWidget() void OverlayWidget::init() { + installEventFilter( m_parent ); + setAcceptDrops( true ); + setAttribute( Qt::WA_TranslucentBackground, true ); m_opacity = 0.00; setOpacity( m_opacity );