diff --git a/libs/kasten/gui/shell/tabbedviews_p.cpp b/libs/kasten/gui/shell/tabbedviews_p.cpp --- a/libs/kasten/gui/shell/tabbedviews_p.cpp +++ b/libs/kasten/gui/shell/tabbedviews_p.cpp @@ -55,6 +55,8 @@ q, [&]( int index ) { onTabCloseRequest( index ); } ); QObject::connect( mTabWidget, &QTabWidget::currentChanged, q, [&]( int index ) { onCurrentChanged( index ); } ); + q->connect( mViewAreaBox, SIGNAL(receivedDropEvent(QDropEvent*)), + SLOT(onDropEvent(QDropEvent*)) ); // TODO: restore // q->connect( mTabWidget, SIGNAL(mouseMiddleClick(QWidget*)), SLOT(onCloseRequest(QWidget*)) ); // q->connect( mTabWidget, SIGNAL(mouseMiddleClick()), SLOT(onMouseMiddleClick()) ); diff --git a/libs/kasten/gui/shell/viewareabox.h b/libs/kasten/gui/shell/viewareabox.h --- a/libs/kasten/gui/shell/viewareabox.h +++ b/libs/kasten/gui/shell/viewareabox.h @@ -54,9 +54,16 @@ /// takes ownership of @p bottomWidget, deletes current bottom widget. Can be 0. void setBottomWidget( QWidget* bottomWidget ); + Q_SIGNALS: + void receivedDropEvent( QDropEvent* event ); + protected Q_SLOTS: void onDone(); + protected: + void dragEnterEvent( QDragEnterEvent* event ) override; + void dropEvent( QDropEvent* event ) override; + protected: QWidget* mCentralWidget; diff --git a/libs/kasten/gui/shell/viewareabox.cpp b/libs/kasten/gui/shell/viewareabox.cpp --- a/libs/kasten/gui/shell/viewareabox.cpp +++ b/libs/kasten/gui/shell/viewareabox.cpp @@ -25,6 +25,7 @@ // Qt #include #include +#include namespace Kasten @@ -45,6 +46,7 @@ mEscapeShortcut = new QShortcut( Qt::Key_Escape, this ); mEscapeShortcut->setEnabled( false ); + setAcceptDrops(true); connect( mEscapeShortcut, &QShortcut::activated, this, &ViewAreaBox::onDone ); // TODO: better use onCancelled } @@ -110,6 +112,16 @@ setBottomWidget( nullptr ); } +void ViewAreaBox::dragEnterEvent(QDragEnterEvent *event) +{ + event->acceptProposedAction(); +} + +void ViewAreaBox::dropEvent(QDropEvent *event) +{ + emit receivedDropEvent(event); +} + ViewAreaBox::~ViewAreaBox() { delete mBottomWidget;