diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index fc4d9a6e2..980506472 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -1470,7 +1470,21 @@ void Window::setupMenu(QMenuBar* menubar) { addGameAction(tr("View &map..."), "mapWindow", openControllerTView(), "tools"); #ifdef M_CORE_GBA - Action* frameWindow = addGameAction(tr("&Frame inspector..."), "frameWindow", openControllerTView(), "tools"); + Action* frameWindow = addGameAction(tr("&Frame inspector..."), "frameWindow", [this]() { + if (!m_frameView) { + m_frameView = new FrameView(m_controller); + connect(this, &Window::shutdown, this, [this]() { + if (m_frameView) { + m_frameView->close(); + } + }); + connect(m_frameView, &QObject::destroyed, this, [this]() { + m_frameView = nullptr; + }); + m_frameView->setAttribute(Qt::WA_DeleteOnClose); + } + m_frameView->show(); + }, "tools"); m_platformActions.insert(PLATFORM_GBA, frameWindow); #endif diff --git a/src/platform/qt/Window.h b/src/platform/qt/Window.h index 526a10496..b41944fa0 100644 --- a/src/platform/qt/Window.h +++ b/src/platform/qt/Window.h @@ -32,6 +32,7 @@ class CoreController; class CoreManager; class DebuggerConsoleController; class Display; +class FrameView; class GDBController; class GIFView; class LibraryController; @@ -215,6 +216,7 @@ private: std::unique_ptr m_overrideView; std::unique_ptr m_sensorView; + FrameView* m_frameView = nullptr; #ifdef USE_FFMPEG VideoView* m_videoView = nullptr;