From 9cdbdb31b05ba148d9ecab24e5bae45407897087 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Sat, 29 May 2021 09:16:30 -0400 Subject: [PATCH] Added ROM file drag and drop into Qt main window feature. This will load the ROM into the emulator when dropped. --- src/drivers/Qt/ConsoleWindow.cpp | 22 ++++++++++++++++++++++ src/drivers/Qt/ConsoleWindow.h | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index debf8c32..9af1eb58 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -140,6 +140,7 @@ consoleWin_t::consoleWin_t(QWidget *parent) setWindowTitle( tr(FCEU_NAME_AND_VERSION) ); setWindowIcon(QIcon(":fceux1.png")); + setAcceptDrops(true); gameTimer = new QTimer( this ); #if QT_VERSION >= QT_VERSION_CHECK(6,0,0) @@ -616,6 +617,27 @@ void consoleWin_t::keyReleaseEvent(QKeyEvent *event) event->accept(); } +void consoleWin_t::dragEnterEvent(QDragEnterEvent *event) +{ + if (event->mimeData()->hasUrls() ) + { + event->acceptProposedAction(); + } +} + +void consoleWin_t::dropEvent(QDropEvent *event) +{ + if (event->mimeData()->hasUrls() ) + { + QList urls = event->mimeData()->urls(); + + fceuWrapperLock(); + LoadGame( urls[0].path().toStdString().c_str() ); + fceuWrapperUnLock(); + event->accept(); + } +} + //--------------------------------------------------------------------------- void consoleWin_t::initHotKeys(void) { diff --git a/src/drivers/Qt/ConsoleWindow.h b/src/drivers/Qt/ConsoleWindow.h index ed40ec9e..391d3ec9 100644 --- a/src/drivers/Qt/ConsoleWindow.h +++ b/src/drivers/Qt/ConsoleWindow.h @@ -16,6 +16,8 @@ #include #include #include +#include +#include #include #include #include @@ -257,6 +259,8 @@ class consoleWin_t : public QMainWindow void closeEvent(QCloseEvent *event); void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); + void dragEnterEvent(QDragEnterEvent *event); + void dropEvent(QDropEvent *event); void syncActionConfig( QAction *act, const char *property ); void showErrorMsgWindow(void);