diff --git a/src/libs/vwidgets/vcontrolpointspline.cpp b/src/libs/vwidgets/vcontrolpointspline.cpp index a1d18f63a..184a94053 100644 --- a/src/libs/vwidgets/vcontrolpointspline.cpp +++ b/src/libs/vwidgets/vcontrolpointspline.cpp @@ -272,14 +272,23 @@ void VControlPointSpline::Init() //--------------------------------------------------------------------------------------------------------------------- void VControlPointSpline::SetCtrlLine(const QPointF &controlPoint, const QPointF &splinePoint) { - QPointF p1, p2; - VGObject::LineIntersectCircle(QPointF(), ScaledRadius(SceneScale(scene())), - QLineF( QPointF(), splinePoint-controlPoint), p1, p2); - QLineF line(splinePoint-controlPoint, p1); - controlLine->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); - controlLine->setLine(line); - controlLine->setVisible(not line.isNull()); - controlLine->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + QLineF circleLine (QPointF(), splinePoint-controlPoint); + const qreal radius = ScaledRadius(SceneScale(scene())); + + if (circleLine.length() > radius) + { + QPointF p1, p2; + VGObject::LineIntersectCircle(QPointF(), radius, circleLine, p1, p2); + QLineF line(splinePoint-controlPoint, p1); + controlLine->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); + controlLine->setLine(line); + controlLine->setVisible(not line.isNull()); + controlLine->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + } + else + { + controlLine->setVisible(false); + } } //---------------------------------------------------------------------------------------------------------------------