diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 9fc27ff44..ba45ec3f5 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -309,9 +309,9 @@ QPointF MainWindow::StartPositionNewPP() const //--------------------------------------------------------------------------------------------------------------------- void MainWindow::InitScenes() { - sceneDraw = new VMainGraphicsScene(); + sceneDraw = new VMainGraphicsScene(this); currentScene = sceneDraw; - qApp->setCurrentScene(currentScene); + qApp->setCurrentScene(¤tScene); connect(this, &MainWindow::EnableItemMove, sceneDraw, &VMainGraphicsScene::EnableItemMove); connect(this, &MainWindow::ItemsSelection, sceneDraw, &VMainGraphicsScene::ItemsSelection); @@ -331,7 +331,7 @@ void MainWindow::InitScenes() connect(sceneDraw, &VMainGraphicsScene::mouseMove, this, &MainWindow::MouseMove); - sceneDetails = new VMainGraphicsScene(); + sceneDetails = new VMainGraphicsScene(this); connect(this, &MainWindow::EnableItemMove, sceneDetails, &VMainGraphicsScene::EnableItemMove); connect(this, &MainWindow::EnableNodeLabelSelection, sceneDetails, &VMainGraphicsScene::ToggleNodeLabelSelection); @@ -3830,8 +3830,6 @@ MainWindow::~MainWindow() CleanLayout(); delete doc; - delete sceneDetails; - delete sceneDraw; delete ui; } diff --git a/src/libs/vmisc/vabstractapplication.cpp b/src/libs/vmisc/vabstractapplication.cpp index 2acf0a9f3..b061115af 100644 --- a/src/libs/vmisc/vabstractapplication.cpp +++ b/src/libs/vmisc/vabstractapplication.cpp @@ -290,12 +290,12 @@ VCommonSettings *VAbstractApplication::Settings() //--------------------------------------------------------------------------------------------------------------------- QGraphicsScene *VAbstractApplication::getCurrentScene() const { - SCASSERT(currentScene != nullptr); - return currentScene; + SCASSERT(*currentScene != nullptr); + return *currentScene; } //--------------------------------------------------------------------------------------------------------------------- -void VAbstractApplication::setCurrentScene(QGraphicsScene *value) +void VAbstractApplication::setCurrentScene(QGraphicsScene **value) { currentScene = value; } diff --git a/src/libs/vmisc/vabstractapplication.h b/src/libs/vmisc/vabstractapplication.h index d55406d64..21b3daa4f 100644 --- a/src/libs/vmisc/vabstractapplication.h +++ b/src/libs/vmisc/vabstractapplication.h @@ -88,7 +88,7 @@ public: QString LocaleToString(const T &value); QGraphicsScene *getCurrentScene() const; - void setCurrentScene(QGraphicsScene *value); + void setCurrentScene(QGraphicsScene **value); VMainGraphicsView *getSceneView() const; void setSceneView(VMainGraphicsView *value); @@ -137,7 +137,7 @@ private: MeasurementsType _patternType; - QGraphicsScene *currentScene; + QGraphicsScene **currentScene; VMainGraphicsView *sceneView; VAbstractPattern *doc; diff --git a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp index 1b338fdd8..4316fb2cd 100644 --- a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp @@ -199,6 +199,12 @@ void DialogPiecePath::CheckState() bOk->setEnabled(flagName && flagError); } +//--------------------------------------------------------------------------------------------------------------------- +void DialogPiecePath::ShowVisualization() +{ + AddVisualization(); +} + //--------------------------------------------------------------------------------------------------------------------- void DialogPiecePath::ShowContextMenu(const QPoint &pos) { @@ -459,6 +465,10 @@ void DialogPiecePath::SetPiecePath(const VPiecePath &path) SetType(path.GetType()); ui->lineEditName->setText(path.GetName()); + VisToolPiecePath *visPath = qobject_cast(vis); + SCASSERT(visPath != nullptr); + visPath->SetPath(path); + ValidObjects(PathIsValid()); ListChanged(); diff --git a/src/libs/vtools/dialogs/tools/dialogpiecepath.h b/src/libs/vtools/dialogs/tools/dialogpiecepath.h index 767694adc..3f30be6a0 100644 --- a/src/libs/vtools/dialogs/tools/dialogpiecepath.h +++ b/src/libs/vtools/dialogs/tools/dialogpiecepath.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 ShowVisualization() Q_DECL_OVERRIDE; private slots: void ShowContextMenu(const QPoint &pos); diff --git a/src/libs/vwidgets/vmaingraphicsscene.cpp b/src/libs/vwidgets/vmaingraphicsscene.cpp index 7f5ddf22c..974717884 100644 --- a/src/libs/vwidgets/vmaingraphicsscene.cpp +++ b/src/libs/vwidgets/vmaingraphicsscene.cpp @@ -51,8 +51,13 @@ class QRectF; /** * @brief VMainGraphicsScene default constructor. */ -VMainGraphicsScene::VMainGraphicsScene() - :QGraphicsScene(), horScrollBar(0), verScrollBar(0), scaleFactor(1), _transform(QTransform()), scenePos(QPointF()), +VMainGraphicsScene::VMainGraphicsScene(QObject *parent) + : QGraphicsScene(parent), + horScrollBar(0), + verScrollBar(0), + scaleFactor(1), + _transform(QTransform()), + scenePos(QPointF()), origins() {} diff --git a/src/libs/vwidgets/vmaingraphicsscene.h b/src/libs/vwidgets/vmaingraphicsscene.h index e7db61531..301046096 100644 --- a/src/libs/vwidgets/vmaingraphicsscene.h +++ b/src/libs/vwidgets/vmaingraphicsscene.h @@ -54,7 +54,7 @@ class VMainGraphicsScene : public QGraphicsScene { Q_OBJECT public: - VMainGraphicsScene(); + explicit VMainGraphicsScene(QObject *parent = nullptr); explicit VMainGraphicsScene(const QRectF & sceneRect, QObject * parent = nullptr); qint32 getHorScrollBar() const; void setHorScrollBar(const qint32 &value);