diff --git a/OSBindings/Qt/mainwindow.cpp b/OSBindings/Qt/mainwindow.cpp index 79cd7dfa8..add5a4183 100644 --- a/OSBindings/Qt/mainwindow.cpp +++ b/OSBindings/Qt/mainwindow.cpp @@ -207,14 +207,15 @@ QString MainWindow::getFilename(const char *title) { return fileName; } -void MainWindow::insertFile(const QString &fileName) { - if(!machine) return; +bool MainWindow::insertFile(const QString &fileName) { + if(!machine) return false; auto mediaTarget = machine->media_target(); - if(!mediaTarget) return; + if(!mediaTarget) return false; - Analyser::Static::Media media = Analyser::Static::GetMedia(fileName.toStdString()); - mediaTarget->insert_media(media); + const Analyser::Static::Media media = Analyser::Static::GetMedia(fileName.toStdString()); + if(media.empty()) return false; + return mediaTarget->insert_media(media); } bool MainWindow::launchFile(const QString &fileName) { @@ -732,7 +733,10 @@ void MainWindow::dropEvent(QDropEvent* event) { case UIPhase::RunningMachine: { // Attempt to insert into the running machine. const auto fileName = event->mimeData()->urls()[0].toLocalFile(); - insertFile(fileName); + if(!insertFile(fileName)) { + deleteMachine(); + launchFile(fileName); + } } break; // TODO: permit multiple files dropped at once in both of the above cases. diff --git a/OSBindings/Qt/mainwindow.h b/OSBindings/Qt/mainwindow.h index ab02f14e9..24f3593e1 100644 --- a/OSBindings/Qt/mainwindow.h +++ b/OSBindings/Qt/mainwindow.h @@ -104,7 +104,7 @@ class MainWindow : public QMainWindow, public Outputs::Speaker::Speaker::Delegat } keyboardInputMode; QAction *insertAction = nullptr; - void insertFile(const QString &fileName); + bool insertFile(const QString &fileName); bool launchFile(const QString &fileName); void launchTarget(std::unique_ptr &&);