From 1dc4790e20cbc949764503c79f7619f573c91fdf Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 29 Jul 2017 21:59:30 -0700 Subject: [PATCH] Qt: Fix regression with sensor view not getting attached --- src/platform/qt/SensorView.cpp | 1 + src/platform/qt/Window.cpp | 20 ++++++++++++++++---- src/platform/qt/Window.h | 4 +++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/platform/qt/SensorView.cpp b/src/platform/qt/SensorView.cpp index 75cc5c3ae..bbcf0dd6a 100644 --- a/src/platform/qt/SensorView.cpp +++ b/src/platform/qt/SensorView.cpp @@ -68,6 +68,7 @@ void SensorView::setController(std::shared_ptr controller) { connect(m_ui.timeFakeEpoch, &QRadioButton::clicked, [controller, this] () { controller->setFakeEpoch(m_ui.time->dateTime()); }); + m_ui.timeButtons->checkedButton()->clicked(); connect(controller.get(), &CoreController::stopping, [this]() { m_controller.reset(); diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 7e1f68ee5..243097055 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -147,7 +147,6 @@ Window::Window(CoreManager* manager, ConfigController* config, int playerId, QWi Window::~Window() { delete m_logView; - delete m_overrideView; #ifdef USE_FFMPEG delete m_videoView; @@ -1414,18 +1413,27 @@ void Window::setupMenu(QMenuBar* menubar) { QAction* overrides = new QAction(tr("Game &overrides..."), toolsMenu); connect(overrides, &QAction::triggered, [this]() { if (!m_overrideView) { - m_overrideView = new OverrideView(m_config); + m_overrideView = std::move(std::make_unique(m_config)); if (m_controller) { m_overrideView->setController(m_controller); } - connect(this, &Window::shutdown, m_overrideView, &QWidget::close); + connect(this, &Window::shutdown, m_overrideView.get(), &QWidget::close); } m_overrideView->show(); }); addControlledAction(toolsMenu, overrides, "overrideWindow"); QAction* sensors = new QAction(tr("Game &Pak sensors..."), toolsMenu); - connect(sensors, &QAction::triggered, openTView(&m_inputController)); + connect(sensors, &QAction::triggered, [this]() { + if (!m_sensorView) { + m_sensorView = std::move(std::make_unique(&m_inputController)); + if (m_controller) { + m_sensorView->setController(m_controller); + } + connect(this, &Window::shutdown, m_sensorView.get(), &QWidget::close); + } + m_sensorView->show(); + }); addControlledAction(toolsMenu, sensors, "sensorWindow"); QAction* cheats = new QAction(tr("&Cheats..."), toolsMenu); @@ -1785,6 +1793,10 @@ void Window::setController(CoreController* controller, const QString& fname) { } #endif + if (m_sensorView) { + m_sensorView->setController(m_controller); + } + if (m_overrideView) { m_overrideView->setController(m_controller); } diff --git a/src/platform/qt/Window.h b/src/platform/qt/Window.h index 4298296d1..9c9384d8b 100644 --- a/src/platform/qt/Window.h +++ b/src/platform/qt/Window.h @@ -34,6 +34,7 @@ class GIFView; class LibraryController; class LogView; class OverrideView; +class SensorView; class ShaderSelector; class ShortcutController; class VideoView; @@ -200,7 +201,8 @@ private: bool m_hitUnimplementedBiosCall; - OverrideView* m_overrideView = nullptr; + std::unique_ptr m_overrideView; + std::unique_ptr m_sensorView; #ifdef USE_FFMPEG VideoView* m_videoView = nullptr;