Qt: Only allow one Frame Inspector to be open
Vicki Pfau vi@endrift.com
Tue, 04 Jun 2019 12:56:50 -0700
2 files changed,
17 insertions(+),
1 deletions(-)
M
src/platform/qt/Window.cpp
→
src/platform/qt/Window.cpp
@@ -1470,7 +1470,21 @@ addGameAction(tr("View &tiles..."), "tileWindow", openControllerTView<TileView>(), "tools");
addGameAction(tr("View &map..."), "mapWindow", openControllerTView<MapView>(), "tools"); #ifdef M_CORE_GBA - Action* frameWindow = addGameAction(tr("&Frame inspector..."), "frameWindow", openControllerTView<FrameView>(), "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
M
src/platform/qt/Window.h
→
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 @@ bool m_hitUnimplementedBiosCall;
std::unique_ptr<OverrideView> m_overrideView; std::unique_ptr<SensorView> m_sensorView; + FrameView* m_frameView = nullptr; #ifdef USE_FFMPEG VideoView* m_videoView = nullptr;