mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Clean up menus properly on client exit (#16150)
This commit is contained in:
parent
dca88be81d
commit
8c8b7cb251
4 changed files with 12 additions and 9 deletions
|
@ -1114,8 +1114,12 @@ void Game::run()
|
|||
|
||||
void Game::shutdown()
|
||||
{
|
||||
// Clear text when exiting.
|
||||
// Delete text and menus first
|
||||
m_game_ui->clearText();
|
||||
m_game_formspec.reset();
|
||||
while (g_menumgr.menuCount() > 0) {
|
||||
g_menumgr.deleteFront();
|
||||
}
|
||||
|
||||
if (g_touchcontrols)
|
||||
g_touchcontrols->hide();
|
||||
|
@ -1126,11 +1130,6 @@ void Game::shutdown()
|
|||
|
||||
sky.reset();
|
||||
|
||||
/* cleanup menus */
|
||||
while (g_menumgr.menuCount() > 0) {
|
||||
g_menumgr.deleteFront();
|
||||
}
|
||||
|
||||
// only if the shutdown progress bar isn't shown yet
|
||||
if (m_shutdown_progress == 0.0f)
|
||||
showOverlayMessage(N_("Shutting down..."), 0, 0);
|
||||
|
|
|
@ -217,10 +217,11 @@ void GameFormSpec::deleteFormspec()
|
|||
}
|
||||
}
|
||||
|
||||
GameFormSpec::~GameFormSpec() {
|
||||
void GameFormSpec::reset()
|
||||
{
|
||||
if (m_formspec)
|
||||
m_formspec->quitMenu();
|
||||
this->deleteFormspec();
|
||||
deleteFormspec();
|
||||
}
|
||||
|
||||
bool GameFormSpec::handleEmptyFormspec(const std::string &formspec, const std::string &formname)
|
||||
|
|
|
@ -26,7 +26,7 @@ struct GameFormSpec
|
|||
{
|
||||
void init(Client *client, RenderingEngine *rendering_engine, InputHandler *input);
|
||||
|
||||
~GameFormSpec();
|
||||
~GameFormSpec() { reset(); }
|
||||
|
||||
void showFormSpec(const std::string &formspec, const std::string &formname);
|
||||
void showCSMFormSpec(const std::string &formspec, const std::string &formname);
|
||||
|
@ -43,6 +43,7 @@ struct GameFormSpec
|
|||
void disableDebugView();
|
||||
|
||||
bool handleCallbacks();
|
||||
void reset();
|
||||
|
||||
#ifdef __ANDROID__
|
||||
// Returns false if no formspec open
|
||||
|
|
|
@ -59,6 +59,8 @@ public:
|
|||
if(!m_stack.empty()) {
|
||||
m_stack.back()->setVisible(true);
|
||||
guienv->setFocus(m_stack.back());
|
||||
} else {
|
||||
guienv->removeFocus(menu);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue