From 585bfec12fa67d2a57660de7a9b0d0031e5759e4 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 12 Nov 2016 15:41:15 +0200 Subject: [PATCH] Fix bug Tool seam allowance. The tool returned to previous position after selecting Apply or Ok buttons in the tool's dialog. --HG-- branch : feature --- .../dialogs/tools/dialogseamallowance.cpp | 28 ++++++++++--------- .../dialogs/tools/dialogseamallowance.h | 3 +- src/libs/vtools/tools/vtoolseamallowance.cpp | 5 ++++ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp index 807ee663f..00f26ed8b 100644 --- a/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp +++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.cpp @@ -38,8 +38,9 @@ DialogSeamAllowance::DialogSeamAllowance(const VContainer *data, const quint32 &toolId, QWidget *parent) : DialogTool(data, toolId, parent), ui(new Ui::DialogSeamAllowance), - m_piece(), - applyAllowed(false)// By default disabled + applyAllowed(false),// By default disabled + m_mx(0), + m_my(0) { ui->setupUi(this); @@ -110,22 +111,24 @@ void DialogSeamAllowance::EnableApply(bool enable) //--------------------------------------------------------------------------------------------------------------------- VPiece DialogSeamAllowance::GetPiece() const { - return m_piece; + return CreatePiece(); } //--------------------------------------------------------------------------------------------------------------------- void DialogSeamAllowance::SetPiece(const VPiece &piece) { - m_piece = piece; ui->listWidget->clear(); - for (int i = 0; i < m_piece.CountNodes(); ++i) + for (int i = 0; i < piece.CountNodes(); ++i) { - NewItem(m_piece.at(i)); + NewItem(piece.at(i)); } - ui->checkBoxForbidFlipping->setChecked(m_piece.IsForbidFlipping()); - ui->doubleSpinBoxSeams->setValue(m_piece.GetSAWidth()); - ui->checkBoxSeams->setChecked(m_piece.IsSeamAllowance()); + ui->checkBoxForbidFlipping->setChecked(piece.IsForbidFlipping()); + ui->doubleSpinBoxSeams->setValue(piece.GetSAWidth()); + ui->checkBoxSeams->setChecked(piece.IsSeamAllowance()); + + m_mx = piece.GetMx(); + m_my = piece.GetMy(); ValidObjects(MainPathIsValid()); @@ -217,10 +220,7 @@ void DialogSeamAllowance::ShowDialog(bool click) //--------------------------------------------------------------------------------------------------------------------- void DialogSeamAllowance::SaveData() -{ - m_piece.Clear(); - m_piece = CreatePiece(); -} +{} //--------------------------------------------------------------------------------------------------------------------- void DialogSeamAllowance::CheckState() @@ -397,6 +397,8 @@ VPiece DialogSeamAllowance::CreatePiece() const piece.SetForbidFlipping(ui->checkBoxForbidFlipping->isChecked()); piece.SetSeamAllowance(ui->checkBoxSeams->isChecked()); piece.SetSAWidth(ui->doubleSpinBoxSeams->value()); + piece.SetMx(m_mx); + piece.SetMy(m_my); return piece; } diff --git a/src/libs/vtools/dialogs/tools/dialogseamallowance.h b/src/libs/vtools/dialogs/tools/dialogseamallowance.h index d881dc6d3..e0603c301 100644 --- a/src/libs/vtools/dialogs/tools/dialogseamallowance.h +++ b/src/libs/vtools/dialogs/tools/dialogseamallowance.h @@ -73,8 +73,9 @@ private: Q_DISABLE_COPY(DialogSeamAllowance) Ui::DialogSeamAllowance *ui; - VPiece m_piece; bool applyAllowed; + qreal m_mx; + qreal m_my; VPiece CreatePiece() const; diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index ae60b869c..391124a4b 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -437,6 +437,11 @@ QVariant VToolSeamAllowance::itemChange(QGraphicsItem::GraphicsItemChange change } } // Don't forget to update geometry, because first change never call full parse + VPiece detail = VAbstractTool::data.GetPiece(id); + detail.SetMx(newPos.x()); + detail.SetMy(newPos.y()); + VAbstractTool::data.UpdatePiece(id, detail); + RefreshGeometry(); changeFinished = true; }