Fix crashing if manually close Clara download status message box

This commit is contained in:
David Rowe 2016-12-15 13:35:58 +13:00 committed by Seth Alves
parent 7ebdc6d387
commit fa9aef8b22
2 changed files with 18 additions and 1 deletions

View file

@ -5909,6 +5909,7 @@ void Application::addAssetToWorldInfo(QString modelName, QString infoText) {
if (!_addAssetToWorldMessageBox) {
_addAssetToWorldMessageBox = DependencyManager::get<OffscreenUi>()->createMessageBox(OffscreenUi::ICON_INFORMATION,
"Downloading Asset", "", QMessageBox::NoButton, QMessageBox::NoButton);
connect(_addAssetToWorldMessageBox, SIGNAL(destroyed()), this, SLOT(onAssetToWorldMessageBoxClosed()));
}
_addAssetToWorldMessageBox->setProperty("text", "\n" + infoText);
@ -5964,6 +5965,7 @@ void Application::addAssetToWorldInfoTimeout() {
if (_addAssetToWorldInfoKeys.length() > 0) {
_addAssetToWorldMessageBox->setProperty("text", "\n" + _addAssetToWorldInfoMessages.last());
} else {
disconnect(_addAssetToWorldMessageBox);
_addAssetToWorldMessageBox->setVisible(false);
_addAssetToWorldMessageBox->deleteLater();
_addAssetToWorldMessageBox = nullptr;
@ -5991,6 +5993,7 @@ void Application::addAssetToWorldError(QString modelName, QString errorText) {
if (!_addAssetToWorldMessageBox) {
_addAssetToWorldMessageBox = DependencyManager::get<OffscreenUi>()->createMessageBox(OffscreenUi::ICON_INFORMATION,
"Downloading Asset", "", QMessageBox::NoButton, QMessageBox::NoButton);
connect(_addAssetToWorldMessageBox, SIGNAL(destroyed()), this, SLOT(onAssetToWorldMessageBoxClosed()));
}
_addAssetToWorldMessageBox->setProperty("text", "\n" + errorText);
@ -6008,9 +6011,11 @@ void Application::addAssetToWorldErrorTimeout() {
If list is not empty, display message from last entry.
If list is empty, close the message box.
*/
if (_addAssetToWorldInfoKeys.length() > 0) {
_addAssetToWorldMessageBox->setProperty("text", "\n" + _addAssetToWorldInfoMessages.last());
} else {
disconnect(_addAssetToWorldMessageBox);
_addAssetToWorldMessageBox->setVisible(false);
_addAssetToWorldMessageBox->deleteLater();
_addAssetToWorldMessageBox = nullptr;
@ -6022,8 +6027,9 @@ void Application::addAssetToWorldMessageClose() {
// Clear messages, e.g., if Interface is being closed or domain changes.
/*
Call if application is shutting down.
Call if user manually closes message box.
Call if domain changes.
Call if application is shutting down.
Stop timers.
Close the message box if open.
@ -6034,6 +6040,7 @@ void Application::addAssetToWorldMessageClose() {
_addAssetToWorldErrorTimer.stop();
if (_addAssetToWorldMessageBox) {
disconnect(_addAssetToWorldMessageBox);
_addAssetToWorldMessageBox->setVisible(false);
_addAssetToWorldMessageBox->deleteLater();
_addAssetToWorldMessageBox = nullptr;
@ -6043,6 +6050,15 @@ void Application::addAssetToWorldMessageClose() {
_addAssetToWorldInfoMessages.clear();
}
void Application::onAssetToWorldMessageBoxClosed() {
// User manually closed message box.
qInfo(interfaceapp) << "User manually closed download status message box";
disconnect(_addAssetToWorldMessageBox);
_addAssetToWorldMessageBox = nullptr;
addAssetToWorldMessageClose();
}
void Application::handleUnzip(QString zipFile, QString unzipFile, bool autoAdd) {
if (autoAdd) {

View file

@ -417,6 +417,7 @@ private slots:
void addAssetToWorldCheckModelSize();
void onAssetToWorldMessageBoxClosed();
void addAssetToWorldInfoTimeout();
void addAssetToWorldErrorTimeout();