all repos — mgba @ f2134e6b62dd18fe7245bda5674e0a1555c6a3ef

mGBA Game Boy Advance Emulator

Qt: Only allow one Frame Inspector to be open
Vicki Pfau vi@endrift.com
Tue, 04 Jun 2019 12:56:50 -0700
commit

f2134e6b62dd18fe7245bda5674e0a1555c6a3ef

parent

42818c764da9400a8dc9aef368711c786cff5884

2 files changed, 17 insertions(+), 1 deletions(-)

jump to
M src/platform/qt/Window.cppsrc/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.hsrc/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;