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 @@ -25,6 +25,7 @@ // Qt #include +#include class QShortcut; @@ -57,7 +58,13 @@ protected Q_SLOTS: void onDone(); + Q_SIGNALS: + void receivedDropEvent(QDropEvent* event); + protected: + void dragEnterEvent(QDragEnterEvent *event); + void dropEvent(QDropEvent *event); + QWidget* mCentralWidget; QWidget* mBottomWidget; 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 @@ -45,6 +45,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 +111,16 @@ setBottomWidget( nullptr ); } +void ViewAreaBox::dragEnterEvent(QDragEnterEvent *event) +{ + event->acceptProposedAction(); +} + +void ViewAreaBox::dropEvent(QDropEvent *event) +{ + emit(receivedDropEvent(event)); +} + ViewAreaBox::~ViewAreaBox() { delete mBottomWidget;