From 1cede87cc699d56b89c4ace2fc7c3aa2263b8137 Mon Sep 17 00:00:00 2001
From: Roman Telezhynskyi <kroluku@gmail.com>
Date: Sat, 31 Aug 2019 09:32:43 +0300
Subject: [PATCH] Fix function IsOutsidePoint.

Not enough just to compare direction. We also must be sure a distance to tested point is bigger than a segment.

--HG--
branch : develop
---
 src/libs/vlayout/vabstractpiece.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp
index db44dfb50..5d7c38ea2 100644
--- a/src/libs/vlayout/vabstractpiece.cpp
+++ b/src/libs/vlayout/vabstractpiece.cpp
@@ -56,11 +56,20 @@ const qreal VSAPoint::maxPassmarkLength = (10/*mm*/ / 25.4) * PrintDPI;
 
 namespace
 {
+//---------------------------------------------------------------------------------------------------------------------
+inline bool IsSameDirection(QPointF p1, QPointF p2, QPointF px)
+{
+    return qAbs(QLineF(p1, p2).angle() - QLineF(p1, px).angle()) < 0.001;
+}
+
 //---------------------------------------------------------------------------------------------------------------------
 // Do we create a point outside of a path?
 inline bool IsOutsidePoint(QPointF p1, QPointF p2, QPointF px)
 {
-    return qAbs(QLineF(p1, p2).angle() - QLineF(p1, px).angle()) < 0.001;
+    QLineF seg1(p1, p2);
+    QLineF seg2(p1, px);
+
+    return IsSameDirection(p1, p2, px) && seg2.length() >= seg1.length();
 }
 
 //---------------------------------------------------------------------------------------------------------------------