From 21e034ef715648b88d15ed463c4497b56b4d3e9a Mon Sep 17 00:00:00 2001
From: Roman Telezhynskyi <kroluku@gmail.com>
Date: Tue, 31 Jan 2017 14:27:13 +0200
Subject: [PATCH] QPlainTextEdit widget crash a dialog if do not disable signal
 when closing a dialog.

--HG--
branch : feature
---
 src/libs/vtools/dialogs/tools/dialogpiecepath.cpp     |  9 +++++++++
 src/libs/vtools/dialogs/tools/dialogpiecepath.h       |  1 +
 src/libs/vtools/dialogs/tools/dialogseamallowance.cpp | 11 +++++++++++
 src/libs/vtools/dialogs/tools/dialogseamallowance.h   |  1 +
 4 files changed, 22 insertions(+)

diff --git a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp
index c4ca47744..9bd71171d 100644
--- a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp
@@ -201,6 +201,15 @@ void DialogPiecePath::ShowVisualization()
     }
 }
 
+//---------------------------------------------------------------------------------------------------------------------
+void DialogPiecePath::closeEvent(QCloseEvent *event)
+{
+    ui->plainTextEditFormulaWidth->blockSignals(true);
+    ui->plainTextEditFormulaWidthBefore->blockSignals(true);
+    ui->plainTextEditFormulaWidthAfter->blockSignals(true);
+    DialogTool::closeEvent(event);
+}
+
 //---------------------------------------------------------------------------------------------------------------------
 void DialogPiecePath::ShowContextMenu(const QPoint &pos)
 {
diff --git a/src/libs/vtools/dialogs/tools/dialogpiecepath.h b/src/libs/vtools/dialogs/tools/dialogpiecepath.h
index 4739d8ea3..a362cd886 100644
--- a/src/libs/vtools/dialogs/tools/dialogpiecepath.h
+++ b/src/libs/vtools/dialogs/tools/dialogpiecepath.h
@@ -65,6 +65,7 @@ protected:
     virtual void SaveData() Q_DECL_OVERRIDE;
     virtual void CheckState() Q_DECL_OVERRIDE;
     virtual void ShowVisualization() Q_DECL_OVERRIDE;
+    virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
 
 private slots:
     void ShowContextMenu(const QPoint &pos);
diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp
index 7ebc6f922..eec2e4cc1 100644
--- a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp
@@ -304,6 +304,17 @@ void DialogSeamAllowance::CheckState()
     }
 }
 
+//---------------------------------------------------------------------------------------------------------------------
+void DialogSeamAllowance::closeEvent(QCloseEvent *event)
+{
+    ui->plainTextEditFormulaWidth->blockSignals(true);
+    ui->plainTextEditFormulaWidthBefore->blockSignals(true);
+    ui->plainTextEditFormulaWidthAfter->blockSignals(true);
+    ui->lineEditRotFormula->blockSignals(true);
+    ui->lineEditLenFormula->blockSignals(true);
+    DialogTool::closeEvent(event);
+}
+
 //---------------------------------------------------------------------------------------------------------------------
 void DialogSeamAllowance::UpdateList()
 {
diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.h b/src/libs/vtools/dialogs/tools/dialogseamallowance.h
index ece3aff7a..dc04306fe 100644
--- a/src/libs/vtools/dialogs/tools/dialogseamallowance.h
+++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.h
@@ -63,6 +63,7 @@ protected:
     /** @brief SaveData Put dialog data in local variables */
     virtual void SaveData() Q_DECL_OVERRIDE;
     virtual void CheckState() Q_DECL_OVERRIDE;
+    virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
 
 protected slots:
     void UpdateList();