diff --git a/CHANGES b/CHANGES index 44a6aed42..620f08f78 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,7 @@ Misc: - SDL: Fix 2.0.5 build on macOS under some circumstances - GBA: Detect hardware for Pokémon FireRed ROM hacks - CMake: Fix CPack dependencies for libpng 1.6 + - Qt: Allow overrides to be saved before a game is loaded 0.6.0: (2017-07-16) Features: diff --git a/src/platform/qt/OverrideView.cpp b/src/platform/qt/OverrideView.cpp index 6b7652f81..1be69029e 100644 --- a/src/platform/qt/OverrideView.cpp +++ b/src/platform/qt/OverrideView.cpp @@ -105,7 +105,6 @@ OverrideView::OverrideView(GameController* controller, ConfigController* config, connect(m_ui.buttonBox, &QDialogButtonBox::accepted, this, &OverrideView::saveOverride); connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &QWidget::close); - m_ui.buttonBox->button(QDialogButtonBox::Save)->setEnabled(false); if (controller->isLoaded()) { gameStarted(controller->thread()); @@ -149,10 +148,15 @@ bool OverrideView::eventFilter(QObject* obj, QEvent* event) { } void OverrideView::saveOverride() { - if (!m_config) { + Override* override = m_controller->override(); + if (!override) { return; } - m_config->saveOverride(*m_controller->override()); + if (m_controller->isLoaded()) { + m_config->saveOverride(*override); + } else { + m_savePending = true; + } } void OverrideView::updateOverrides() { @@ -230,7 +234,6 @@ void OverrideView::gameStarted(mCoreThread* thread) { } m_ui.tabWidget->setEnabled(false); - m_ui.buttonBox->button(QDialogButtonBox::Save)->setEnabled(true); switch (thread->core->platform(thread->core)) { #ifdef M_CORE_GBA @@ -275,13 +278,17 @@ void OverrideView::gameStarted(mCoreThread* thread) { case PLATFORM_NONE: break; } + + if (m_savePending) { + m_savePending = false; + saveOverride(); + } } void OverrideView::gameStopped() { m_ui.tabWidget->setEnabled(true); m_ui.savetype->setCurrentIndex(0); m_ui.idleLoop->clear(); - m_ui.buttonBox->button(QDialogButtonBox::Save)->setEnabled(false); m_ui.mbc->setCurrentIndex(0); m_ui.gbModel->setCurrentIndex(0); diff --git a/src/platform/qt/OverrideView.h b/src/platform/qt/OverrideView.h index 3d1c8a3aa..1e2242d8b 100644 --- a/src/platform/qt/OverrideView.h +++ b/src/platform/qt/OverrideView.h @@ -44,6 +44,7 @@ private: GameController* m_controller; ConfigController* m_config; + bool m_savePending = false; #ifdef M_CORE_GB uint32_t m_gbColors[4]{};