fix: load world dialog wasn't closed if connection was lost

Dieser Commit ist enthalten in:
Reinder Feenstra 2024-09-05 23:22:34 +02:00
Ursprung 5301752ed6
Commit e622f1d61e
2 geänderte Dateien mit 21 neuen und 7 gelöschten Zeilen

Datei anzeigen

@ -761,13 +761,21 @@ void MainWindow::loadWorld()
if(!m_connection)
return;
std::unique_ptr<WorldListDialog> d = std::make_unique<WorldListDialog>(m_connection, this);
if(d->exec() == QDialog::Accepted)
{
Method* method = m_connection->traintastic()->getMethod("load_world");
if(Q_LIKELY(method))
method->call(d->uuid());
}
m_loadWorldDialog = std::make_unique<WorldListDialog>(m_connection, this);
connect(m_loadWorldDialog.get(), &WorldListDialog::finished,
[this](int result)
{
if(result == QDialog::Accepted)
{
if(Method* method = m_connection->traintastic()->getMethod("load_world")) /*[[likely]]*/
{
method->call(m_loadWorldDialog->uuid());
}
}
m_loadWorldDialog.release()->deleteLater();
});
m_loadWorldDialog->setModal(true);
m_loadWorldDialog->show();
}
void MainWindow::toggleFullScreen()
@ -970,6 +978,10 @@ void MainWindow::connectionStateChanged()
if(m_connection && m_connection->state() == Connection::State::Disconnected)
{
m_connection.reset();
if(m_loadWorldDialog)
{
m_loadWorldDialog->reject();
}
if(m_serverLog)
{
delete m_serverLog;

Datei anzeigen

@ -46,6 +46,7 @@ class NewWorldWizard;
class IntroductionWizard;
class AddInterfaceWizard;
class NewBoardWizard;
class WorldListDialog;
class MainWindow final : public QMainWindow
{
@ -55,6 +56,7 @@ class MainWindow final : public QMainWindow
std::shared_ptr<Connection> m_connection;
ObjectPtr m_world;
bool m_newWorldRequested = false;
std::unique_ptr<WorldListDialog> m_loadWorldDialog;
std::unique_ptr<NewWorldWizard> m_newWorldWizard;
int m_clockRequest;
ObjectPtr m_clock;