diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 5f56b5968..e0b7361a3 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -643,6 +643,7 @@ void MainWindow::ClosedDialog(int result) SCASSERT(scene != nullptr) QGraphicsItem *tool = dynamic_cast(DrawTool::Create(dialogTool, scene, doc, pattern)); + SCASSERT(tool != nullptr) ui->view->itemClicked(tool); } ArrowTool(); @@ -664,23 +665,25 @@ void MainWindow::ClosedDialogWithApply(int result, VMainGraphicsScene *scene) { SCASSERT(scene != nullptr) - dialogTool->SetAssociatedTool( - dynamic_cast (DrawTool::Create(dialogTool, scene, doc, pattern))); + dialogTool->SetAssociatedTool(DrawTool::Create(dialogTool, scene, doc, pattern)); } else { // Or update associated tool with data - VDrawTool * vtool= static_cast(dialogTool->GetAssociatedTool()); + DrawTool * vtool= qobject_cast(dialogTool->GetAssociatedTool()); + SCASSERT(vtool != nullptr) vtool->FullUpdateFromGuiApply(); } } SCASSERT(not dialogTool.isNull()) QGraphicsItem *tool = dynamic_cast(dialogTool->GetAssociatedTool()); + SCASSERT(tool != nullptr) ui->view->itemClicked(tool); if (dialogTool->GetAssociatedTool() != nullptr) { - VDrawTool *vtool= static_cast(dialogTool->GetAssociatedTool()); + DrawTool *vtool= qobject_cast(dialogTool->GetAssociatedTool()); + SCASSERT(vtool != nullptr) vtool->DialogLinkDestroy(); - connect(vtool, &VDrawTool::ToolTip, this, &MainWindow::ShowToolTip); + connect(vtool, &DrawTool::ToolTip, this, &MainWindow::ShowToolTip); } ArrowTool(); // If insert not to the end of file call lite parse @@ -708,12 +711,11 @@ void MainWindow::ApplyDialog(VMainGraphicsScene *scene) { SCASSERT(scene != nullptr) - dialogTool->SetAssociatedTool( - static_cast (DrawTool::Create(dialogTool, scene, doc, pattern))); + dialogTool->SetAssociatedTool(DrawTool::Create(dialogTool, scene, doc, pattern)); } else { // Or update associated tool with data - VDrawTool * vtool= static_cast(dialogTool->GetAssociatedTool()); + DrawTool * vtool= qobject_cast(dialogTool->GetAssociatedTool()); SCASSERT(vtool != nullptr) vtool->FullUpdateFromGuiApply(); } diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index 5c7df9bca..0a996d625 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -69,7 +69,8 @@ public: /** @brief setDialog set dialog when user want change tool option. */ virtual void setDialog() {} - virtual void DialogLinkDestroy(); + + void DialogLinkDestroy(); QString getLineType() const; virtual void SetTypeLine(const QString &value); diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index d726a7409..38533cb9a 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -167,6 +167,12 @@ void VToolSeamAllowance::Remove(bool ask) } } +//--------------------------------------------------------------------------------------------------------------------- +void VToolSeamAllowance::DialogLinkDestroy() +{ + m_dialog=nullptr; +} + //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::InsertNode(VPieceNode node, quint32 pieceId, VMainGraphicsScene *scene, VContainer *data, VAbstractPattern *doc) diff --git a/src/libs/vtools/tools/vtoolseamallowance.h b/src/libs/vtools/tools/vtoolseamallowance.h index 21f4a76e0..67fd36a2f 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.h +++ b/src/libs/vtools/tools/vtoolseamallowance.h @@ -74,6 +74,7 @@ public: static const QString AttrBottomPin; void Remove(bool ask); + void DialogLinkDestroy(); static void InsertNode(VPieceNode node, quint32 pieceId, VMainGraphicsScene *scene, VContainer *data, VAbstractPattern *doc);