Fix bug with simple curve. It should be hovered only if mouse pointer above a
path. --HG-- branch : develop
This commit is contained in:
parent
d0e2facf94
commit
185636a550
|
@ -35,14 +35,28 @@
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VCurvePathItem::VCurvePathItem(QGraphicsItem *parent)
|
||||
: QGraphicsPathItem(parent),
|
||||
m_directionArrows()
|
||||
m_directionArrows(),
|
||||
m_points()
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QPainterPath VCurvePathItem::shape() const
|
||||
{
|
||||
QPainterPath itemPath = path();
|
||||
QPainterPath itemPath;
|
||||
|
||||
if (not m_points.isEmpty())
|
||||
{
|
||||
for (qint32 i = 0; i < m_points.count()-1; ++i)
|
||||
{
|
||||
itemPath.moveTo(m_points.at(i));
|
||||
itemPath.lineTo(m_points.at(i+1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
itemPath = path();
|
||||
}
|
||||
|
||||
const QPainterPath arrowsPath = VAbstractCurve::ShowDirection(m_directionArrows,
|
||||
ScaleWidth(VAbstractCurve::lengthCurveDirectionArrow,
|
||||
|
@ -50,8 +64,8 @@ QPainterPath VCurvePathItem::shape() const
|
|||
if (arrowsPath != QPainterPath())
|
||||
{
|
||||
itemPath.addPath(arrowsPath);
|
||||
itemPath.setFillRule(Qt::WindingFill);
|
||||
}
|
||||
itemPath.setFillRule(Qt::WindingFill);
|
||||
|
||||
// We unfortunately need this hack as QPainterPathStroker will set a width of 1.0
|
||||
// if we pass a value of 0.0 to QPainterPathStroker::setWidth()
|
||||
|
@ -111,6 +125,12 @@ void VCurvePathItem::SetDirectionArrows(const QVector<QPair<QLineF, QLineF> > &a
|
|||
m_directionArrows = arrows;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VCurvePathItem::SetPoints(const QVector<QPointF> &points)
|
||||
{
|
||||
m_points = points;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VCurvePathItem::ScalePenWidth()
|
||||
{
|
||||
|
|
|
@ -49,12 +49,14 @@ public:
|
|||
enum { Type = UserType + static_cast<int>(Vis::CurvePathItem)};
|
||||
|
||||
void SetDirectionArrows(const QVector<QPair<QLineF, QLineF>> &arrows);
|
||||
void SetPoints(const QVector<QPointF> &points);
|
||||
protected:
|
||||
virtual void ScalePenWidth();
|
||||
private:
|
||||
Q_DISABLE_COPY(VCurvePathItem)
|
||||
|
||||
QVector<QPair<QLineF, QLineF>> m_directionArrows;
|
||||
QVector<QPointF> m_points;
|
||||
};
|
||||
|
||||
#endif // VCURVEPATHITEM_H
|
||||
|
|
|
@ -66,6 +66,7 @@ void VSimpleCurve::RefreshGeometry(const QSharedPointer<VAbstractCurve> &curve)
|
|||
{
|
||||
m_isHovered ? SetDirectionArrows(m_curve->DirectionArrows()) : SetDirectionArrows(QVector<DirectionArrow>());
|
||||
setPath(m_curve->GetPath());
|
||||
SetPoints(m_curve->GetPoints());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user