From 45ced255618f4a3bf792c3b194d250d5f8c8297c Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 9 Jun 2017 12:39:24 +0300 Subject: [PATCH] Fixed issue #704. Valentina crashes if click on detail. --HG-- branch : develop --- ChangeLog.txt | 1 + src/libs/vmisc/def.h | 10 ++++++++-- src/libs/vwidgets/vcurvepathitem.h | 5 +++++ src/libs/vwidgets/vgrainlineitem.h | 4 ++++ src/libs/vwidgets/vnobrushscalepathitem.h | 5 +++++ src/libs/vwidgets/vpieceitem.h | 5 +++++ src/libs/vwidgets/vtextgraphicsitem.h | 3 +++ 7 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 046c0c720..13044b5cc 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -19,6 +19,7 @@ - [#702] Valentina produces broken shortcut (.lnk) files on Windows. - Changed default behaviour if path to multisize measurements or templates doesn't exist. - [#703] Valentina warns about format rewriting for unsaved files. +- [#704] Valentina crashes if click on detail. # Version 0.5.0 May 9, 2017 - [#581] User can now filter input lists by keyword in function wizard. diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index 8977b7d6e..875a07272 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -103,7 +103,7 @@ enum class PiecePathIncludeType : unsigned char enum class PiecePathType : unsigned char {PiecePath = 0, CustomSeamAllowance = 1, InternalPath = 2, Unknown = 3}; -typedef unsigned char ToolVisHolderType; +typedef int ToolVisHolderType; enum class Tool : ToolVisHolderType { Arrow, @@ -207,7 +207,13 @@ enum class Vis : ToolVisHolderType ToolPiece, ToolPiecePath, ToolPin, - PiecePins + PiecePins, + NoBrush, + CurvePathItem, + GrainlineItem, + PieceItem, + TextGraphicsItem, + LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used }; enum class VarType : char { Measurement, Increment, LineLength, CurveLength, CurveCLength, LineAngle, CurveAngle, diff --git a/src/libs/vwidgets/vcurvepathitem.h b/src/libs/vwidgets/vcurvepathitem.h index 11ba5989a..198c3c66d 100644 --- a/src/libs/vwidgets/vcurvepathitem.h +++ b/src/libs/vwidgets/vcurvepathitem.h @@ -32,6 +32,8 @@ #include #include +#include "../vmisc/def.h" + class VCurvePathItem : public QGraphicsPathItem { public: @@ -40,6 +42,9 @@ public: virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) Q_DECL_OVERRIDE; + virtual int type() const Q_DECL_OVERRIDE {return Type;} + enum { Type = UserType + static_cast(Vis::CurvePathItem)}; + void SetDirectionPath(const QPainterPath &path); private: Q_DISABLE_COPY(VCurvePathItem) diff --git a/src/libs/vwidgets/vgrainlineitem.h b/src/libs/vwidgets/vgrainlineitem.h index 8838f6319..0af546c1c 100644 --- a/src/libs/vwidgets/vgrainlineitem.h +++ b/src/libs/vwidgets/vgrainlineitem.h @@ -31,6 +31,7 @@ #include "vpieceitem.h" #include "../vpatterndb/floatItemData/vgrainlinedata.h" +#include "../vmisc/def.h" class VGrainlineItem : public VPieceItem { @@ -44,6 +45,9 @@ public: virtual void paint(QPainter* pP, const QStyleOptionGraphicsItem* pOption, QWidget* pWidget) Q_DECL_OVERRIDE; void UpdateGeometry(const QPointF& ptPos, qreal dRotation, qreal dLength, ArrowType eAT); + virtual int type() const Q_DECL_OVERRIDE {return Type;} + enum { Type = UserType + static_cast(Vis::GrainlineItem)}; + bool IsContained(const QPointF &pt, qreal dRot, qreal &dX, qreal &dY) const; signals: diff --git a/src/libs/vwidgets/vnobrushscalepathitem.h b/src/libs/vwidgets/vnobrushscalepathitem.h index 4c3712c5d..f9b736dc3 100644 --- a/src/libs/vwidgets/vnobrushscalepathitem.h +++ b/src/libs/vwidgets/vnobrushscalepathitem.h @@ -33,6 +33,8 @@ #include #include +#include "../vmisc/def.h" + class VNoBrushScalePathItem : public QGraphicsPathItem { public: @@ -42,6 +44,9 @@ protected: virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = nullptr) Q_DECL_OVERRIDE; + virtual int type() const Q_DECL_OVERRIDE {return Type;} + enum { Type = UserType + static_cast(Vis::NoBrush)}; + private: Q_DISABLE_COPY(VNoBrushScalePathItem) }; diff --git a/src/libs/vwidgets/vpieceitem.h b/src/libs/vwidgets/vpieceitem.h index 103158d6e..f1508253a 100644 --- a/src/libs/vwidgets/vpieceitem.h +++ b/src/libs/vwidgets/vpieceitem.h @@ -32,6 +32,8 @@ #include #include +#include "../vmisc/def.h" + class VPieceItem : public QGraphicsObject { Q_OBJECT @@ -60,6 +62,9 @@ public: VPieceItem::MoveTypes GetMoveType() const; void SetMoveType(const VPieceItem::MoveTypes &moveType); + virtual int type() const Q_DECL_OVERRIDE {return Type;} + enum { Type = UserType + static_cast(Vis::PieceItem)}; + signals: void SignalMoved(const QPointF &ptPos); diff --git a/src/libs/vwidgets/vtextgraphicsitem.h b/src/libs/vwidgets/vtextgraphicsitem.h index e1e8e62a7..f59ce5388 100644 --- a/src/libs/vwidgets/vtextgraphicsitem.h +++ b/src/libs/vwidgets/vtextgraphicsitem.h @@ -58,6 +58,9 @@ public: virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; virtual void Update() Q_DECL_OVERRIDE; + virtual int type() const Q_DECL_OVERRIDE {return Type;} + enum { Type = UserType + static_cast(Vis::TextGraphicsItem)}; + void SetFont(const QFont& fnt); int GetFontSize() const; void AddLine(const TextLine& tl);