From 1cffbb2bd36c0abb99d116daf7212a4b82b87e08 Mon Sep 17 00:00:00 2001 From: Krzysztof Dermont Date: Sun, 5 Jul 2020 21:46:45 +0200 Subject: [PATCH] Fix closing Load Save dialog without game selected Pressing Load when no savegame is selected resumes game but Load Save window stays open. --- src/ui/screen/screen_io.cpp | 10 ++++++---- src/ui/screen/screen_io.h | 2 +- src/ui/screen/screen_io_read.cpp | 3 +-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ui/screen/screen_io.cpp b/src/ui/screen/screen_io.cpp index d3df8fdb..46d90336 100644 --- a/src/ui/screen/screen_io.cpp +++ b/src/ui/screen/screen_io.cpp @@ -244,22 +244,24 @@ void CScreenIO::IOWriteScene() // Reads the scene. -void CScreenIO::IOReadScene() +bool CScreenIO::IOReadScene() { CWindow* pw; CList* pl; pw = static_cast(m_interface->SearchControl(EVENT_WINDOW5)); - if ( pw == nullptr ) return; + if ( pw == nullptr ) return false; pl = static_cast(pw->SearchControl(EVENT_INTERFACE_IOLIST)); - if ( pl == nullptr ) return; + if ( pl == nullptr ) return false; int sel = pl->GetSelect(); - if (sel < 0 || sel >= static_cast(m_saveList.size())) return; + if (sel < 0 || sel >= static_cast(m_saveList.size())) return false; m_main->GetPlayerProfile()->LoadScene(m_saveList.at(sel)); m_screenLevelList->SetSelection(m_main->GetLevelCategory(), m_main->GetLevelChap()-1, m_main->GetLevelRank()-1); + + return true; } } // namespace Ui diff --git a/src/ui/screen/screen_io.h b/src/ui/screen/screen_io.h index dd5f35ec..0dd2f0ad 100644 --- a/src/ui/screen/screen_io.h +++ b/src/ui/screen/screen_io.h @@ -39,7 +39,7 @@ protected: void IOUpdateList(bool isWrite); void IODeleteScene(); void IOWriteScene(); - void IOReadScene(); + bool IOReadScene(); protected: CScreenLevelList* m_screenLevelList; diff --git a/src/ui/screen/screen_io_read.cpp b/src/ui/screen/screen_io_read.cpp index c80132bd..c90eac3d 100644 --- a/src/ui/screen/screen_io_read.cpp +++ b/src/ui/screen/screen_io_read.cpp @@ -168,8 +168,7 @@ bool CScreenIORead::EventProcess(const Event &event) if ( event.type == EVENT_INTERFACE_IOREAD ) { - IOReadScene(); - if(m_inSimulation) + if(IOReadScene() && m_inSimulation) { m_main->StopSuspend(); m_main->ChangePhase(PHASE_SIMUL);