diff --git a/src/app/valentina/dialogs/dialoglayoutprogress.cpp b/src/app/valentina/dialogs/dialoglayoutprogress.cpp index 59236ba11..1498859bf 100644 --- a/src/app/valentina/dialogs/dialoglayoutprogress.cpp +++ b/src/app/valentina/dialogs/dialoglayoutprogress.cpp @@ -74,7 +74,8 @@ DialogLayoutProgress::DialogLayoutProgress(QElapsedTimer timer, qint64 timeout, if (timeout <= 1000) { - emit Abort(); + emit Timeout(); + progressTimer->stop(); } }); progressTimer->start(1000); diff --git a/src/app/valentina/dialogs/dialoglayoutprogress.h b/src/app/valentina/dialogs/dialoglayoutprogress.h index 5663d356d..8e4a4720e 100644 --- a/src/app/valentina/dialogs/dialoglayoutprogress.h +++ b/src/app/valentina/dialogs/dialoglayoutprogress.h @@ -50,6 +50,7 @@ public: signals: void Abort(); + void Timeout(); public slots: void Start(); diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index 31767670d..e48779d12 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -231,6 +231,7 @@ bool MainWindowsNoGUI::GenerateLayout(VLayoutGenerator& lGenerator) progressTimer->start(1000); #endif connect(progress.data(), &DialogLayoutProgress::Abort, &lGenerator, &VLayoutGenerator::Abort); + connect(progress.data(), &DialogLayoutProgress::Timeout, &lGenerator, &VLayoutGenerator::Timeout); } progress->Start(); diff --git a/src/libs/vlayout/vlayoutgenerator.cpp b/src/libs/vlayout/vlayoutgenerator.cpp index dad17c4b9..951f82863 100644 --- a/src/libs/vlayout/vlayoutgenerator.cpp +++ b/src/libs/vlayout/vlayoutgenerator.cpp @@ -324,6 +324,14 @@ void VLayoutGenerator::Abort() QThreadPool::globalInstance()->clear(); } +//--------------------------------------------------------------------------------------------------------------------- +void VLayoutGenerator::Timeout() +{ + stopGeneration.store(true); + state = LayoutErrors::Timeout; + QThreadPool::globalInstance()->clear(); +} + //--------------------------------------------------------------------------------------------------------------------- bool VLayoutGenerator::IsStripOptimization() const { diff --git a/src/libs/vlayout/vlayoutgenerator.h b/src/libs/vlayout/vlayoutgenerator.h index e894cd982..baeee9823 100644 --- a/src/libs/vlayout/vlayoutgenerator.h +++ b/src/libs/vlayout/vlayoutgenerator.h @@ -130,6 +130,7 @@ public: public slots: void Abort(); + void Timeout(); private: Q_DISABLE_COPY(VLayoutGenerator)