Qt: Only allow one Frame Inspector to be open

This commit is contained in:
Vicki Pfau 2019-06-04 12:56:50 -07:00
parent 42818c764d
commit f2134e6b62
2 changed files with 17 additions and 1 deletions

View File

@ -1470,7 +1470,21 @@ void Window::setupMenu(QMenuBar* menubar) {
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

View File

@ -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<OverrideView> m_overrideView;
std::unique_ptr<SensorView> m_sensorView;
FrameView* m_frameView = nullptr;
#ifdef USE_FFMPEG
VideoView* m_videoView = nullptr;