diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index 599420faef..49365f2c7f 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -1463,6 +1463,10 @@ void GMainWindow::OnLoadAmiibo() { return; } + LoadAmiibo(filename); +} + +void GMainWindow::LoadAmiibo(const QString& filename) { Core::System& system{Core::System::GetInstance()}; Service::SM::ServiceManager& sm = system.ServiceManager(); auto nfc = sm.GetService("nfc:u"); @@ -1859,10 +1863,21 @@ static bool IsSingleFileDropEvent(QDropEvent* event) { } void GMainWindow::dropEvent(QDropEvent* event) { - if (IsSingleFileDropEvent(event) && ConfirmChangeGame()) { - const QMimeData* mimeData = event->mimeData(); - QString filename = mimeData->urls().at(0).toLocalFile(); - BootGame(filename); + if (!IsSingleFileDropEvent(event)) { + return; + } + + const QMimeData* mime_data = event->mimeData(); + const QString& filename = mime_data->urls().at(0).toLocalFile(); + + if (emulation_running && QFileInfo(filename).suffix() == "bin") { + // Amiibo + LoadAmiibo(filename); + } else { + // Game + if (ConfirmChangeGame()) { + BootGame(filename); + } } } diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h index 3ff40f976a..870ed40ff3 100644 --- a/src/citra_qt/main.h +++ b/src/citra_qt/main.h @@ -120,6 +120,7 @@ private: void ShowNoUpdatePrompt(); void CheckForUpdates(); void SetDiscordEnabled(bool state); + void LoadAmiibo(const QString& filename); /** * Stores the filename in the recently loaded files list.