diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index d98f1a1cd..547e7f52f 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -4512,6 +4512,9 @@ void VPattern::PrepareForParse(const Document &parse) { SCASSERT(sceneDraw != nullptr) SCASSERT(sceneDetail != nullptr) + + emit CancelLabelRendering(); + if (parse == Document::FullParse) { RefreshElementIdCache(); diff --git a/src/app/valentina/xml/vpattern.h b/src/app/valentina/xml/vpattern.h index 3ec9fa901..8cbdc59f1 100644 --- a/src/app/valentina/xml/vpattern.h +++ b/src/app/valentina/xml/vpattern.h @@ -30,8 +30,8 @@ #define VPATTERN_H #include "../ifc/xml/vabstractpattern.h" -#include "../vpatterndb/vcontainer.h" #include "../ifc/xml/vpatternconverter.h" +#include "../vpatterndb/vcontainer.h" class VMainGraphicsScene; class VNodeDetail; @@ -45,6 +45,7 @@ class VToolSeamAllowance; class VPattern : public VAbstractPattern { Q_OBJECT // NOLINT + public: VPattern(VContainer *data, VMainGraphicsScene *sceneDraw, VMainGraphicsScene *sceneDetail, QObject *parent = nullptr); @@ -130,7 +131,7 @@ private: Q_DISABLE_COPY_MOVE(VPattern) // NOLINT /** @brief data container with data. */ - VContainer *data; + VContainer *data; VMainGraphicsScene *sceneDraw; VMainGraphicsScene *sceneDetail; @@ -144,8 +145,8 @@ private: static auto ParseDetailNode(const QDomElement &domElement) -> VNodeDetail; void ParseRootElement(const Document &parse, const QDomNode &node); - void ParseDrawElement(const QDomNode& node, const Document &parse); - void ParseDrawMode(const QDomNode& node, const Document &parse, const Draw &mode); + void ParseDrawElement(const QDomNode &node, const Document &parse); + void ParseDrawMode(const QDomNode &node, const Document &parse, const Draw &mode); void ParseDrawModeElement(QDomElement &domElement, const Document &parse, const Draw &mode); void ParseDetailElement(QDomElement &domElement, const Document &parse); void ParseDetailInternals(const QDomElement &domElement, VPiece &detail) const; @@ -205,23 +206,20 @@ private: const Document &parse); void ParseToolPointOfIntersectionCircles(VMainGraphicsScene *scene, QDomElement &domElement, const Document &parse); void ParseToolPointOfIntersectionCurves(VMainGraphicsScene *scene, QDomElement &domElement, const Document &parse); - void ParseToolPointFromCircleAndTangent(VMainGraphicsScene *scene, QDomElement &domElement, - const Document &parse); + void ParseToolPointFromCircleAndTangent(VMainGraphicsScene *scene, QDomElement &domElement, const Document &parse); void ParseToolPointFromArcAndTangent(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); void ParseToolTrueDarts(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); // TODO. Delete if minimal supported version is 0.2.7 - Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 2, 7), - "Time to refactor the code."); + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 2, 7), "Time to refactor the code."); void ParseOldToolSpline(VMainGraphicsScene *scene, QDomElement &domElement, const Document &parse); void ParseToolSpline(VMainGraphicsScene *scene, QDomElement &domElement, const Document &parse); void ParseToolCubicBezier(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); // TODO. Delete if minimal supported version is 0.2.7 - Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 2, 7), - "Time to refactor the code."); + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 2, 7), "Time to refactor the code."); void ParseOldToolSplinePath(VMainGraphicsScene *scene, QDomElement &domElement, const Document &parse); void ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); diff --git a/src/libs/ifc/xml/vabstractpattern.h b/src/libs/ifc/xml/vabstractpattern.h index ae3ca0ede..90ce2e1c9 100644 --- a/src/libs/ifc/xml/vabstractpattern.h +++ b/src/libs/ifc/xml/vabstractpattern.h @@ -473,6 +473,8 @@ signals: void BackgroundImagePositionChanged(const QUuid &id); void BackgroundImageOpacityChanged(const QUuid &id); + void CancelLabelRendering(); + public slots: virtual void LiteParseTree(const Document &parse) = 0; void haveLiteChange(); diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index ea4cd1467..d33728fe8 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -395,6 +395,12 @@ auto RenderFoldLine(const VPiece &detail, const VContainer *data) -> VFoldLine } } // namespace +//--------------------------------------------------------------------------------------------------------------------- +VToolSeamAllowance::~VToolSeamAllowance() +{ + CancelLabelRendering(); +} + //--------------------------------------------------------------------------------------------------------------------- auto VToolSeamAllowance::Create(const QPointer &dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data) -> VToolSeamAllowance * @@ -1734,6 +1740,7 @@ VToolSeamAllowance::VToolSeamAllowance(const VToolSeamAllowanceInitData &initDat connect(m_sceneDetails, &VMainGraphicsScene::EnableToolMove, this, &VToolSeamAllowance::EnableToolMove); connect(m_sceneDetails, &VMainGraphicsScene::ItemSelection, this, &VToolSeamAllowance::ToolSelectionType); connect(m_sceneDetails, &VMainGraphicsScene::UpdatePassmarks, this, &VToolSeamAllowance::UpdatePassmarks); + connect(doc, &VAbstractPattern::CancelLabelRendering, this, &VToolSeamAllowance::CancelLabelRendering); ConnectOutsideSignals(); @@ -1973,6 +1980,8 @@ void VToolSeamAllowance::SaveDialogChange(const QString &undoText) const VPiece newDet = dialogTool->GetPiece(); const VPiece oldDet = VAbstractTool::data.GetPiece(m_id); + CancelLabelRendering(); + QVector> &undocommands = dialogTool->UndoStack(); const bool groupChange = not undocommands.isEmpty(); diff --git a/src/libs/vtools/tools/vtoolseamallowance.h b/src/libs/vtools/tools/vtoolseamallowance.h index 7553c20ab..e185335d9 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.h +++ b/src/libs/vtools/tools/vtoolseamallowance.h @@ -55,7 +55,7 @@ class VToolSeamAllowance final : public VInteractiveTool, public QGraphicsPathIt Q_OBJECT // NOLINT public: - ~VToolSeamAllowance() override = default; + ~VToolSeamAllowance() override; static auto Create(const QPointer &dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data) -> VToolSeamAllowance *; @@ -122,7 +122,6 @@ public: auto boundingRect() const -> QRectF override; auto shape() const -> QPainterPath override; - void CancelLabelRendering(); public slots: void FullUpdateFromGuiApply() override; void FullUpdateFromFile() override; @@ -138,6 +137,8 @@ public slots: void UpdatePassmarks(); void ShowOptions(); void DeleteFromMenu(); + void CancelLabelRendering(); + protected slots: void UpdateGrainline(); void SaveMoveDetail(const QPointF &ptPos);