diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index 4eb4cb65b..f5e9fab57 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -25,6 +25,7 @@ #include "MainWindow.h" #include #include +#include #include #include "Code/CaptureContext.h" #include "Code/QRDUtils.h" @@ -40,6 +41,8 @@ MainWindow::MainWindow(CaptureContext *ctx) : QMainWindow(NULL), ui(new Ui::Main { ui->setupUi(this); + setAcceptDrops(true); + QObject::connect(ui->action_Load_Default_Layout, &QAction::triggered, this, &MainWindow::loadLayout_triggered); QObject::connect(ui->action_Load_Layout_1, &QAction::triggered, this, @@ -727,6 +730,35 @@ void MainWindow::closeEvent(QCloseEvent *event) SaveLayout(0); } +QString dragFilename(const QMimeData *mimeData) +{ + if(mimeData->hasUrls()) + { + QList urls = mimeData->urls(); + if(urls.size() == 1 && urls[0].isLocalFile()) + { + QFileInfo f(urls[0].toLocalFile()); + if(f.exists()) + return f.absoluteFilePath(); + } + } + + return ""; +} + +void MainWindow::dragEnterEvent(QDragEnterEvent *event) +{ + if(dragFilename(event->mimeData()) != "") + event->acceptProposedAction(); +} + +void MainWindow::dropEvent(QDropEvent *event) +{ + QString fn = dragFilename(event->mimeData()); + if(fn != "") + LoadFromFilename(fn); +} + void MainWindow::LoadSaveLayout(QAction *action, bool save) { if(action == NULL) diff --git a/qrenderdoc/Windows/MainWindow.h b/qrenderdoc/Windows/MainWindow.h index 41f76f4fd..a3c5e024c 100644 --- a/qrenderdoc/Windows/MainWindow.h +++ b/qrenderdoc/Windows/MainWindow.h @@ -70,6 +70,9 @@ private slots: private: void closeEvent(QCloseEvent *event) override; + void dragEnterEvent(QDragEnterEvent *event) override; + void dropEvent(QDropEvent *event) override; + Ui::MainWindow *ui; CaptureContext *m_Ctx;