fix: load world dialog wasn't closed if connection was lost
Dieser Commit ist enthalten in:
Ursprung
5301752ed6
Commit
e622f1d61e
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren