diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDraw2.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDraw2.ui
index ce28bd9d58..6b5587e678 100644
--- a/src/Mod/TechDraw/Gui/DlgPrefsTechDraw2.ui
+++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDraw2.ui
@@ -216,6 +216,15 @@
+ -
+
+ 5 - Fork
+
+
+
+ :/icons/arrowfork.svg:/icons/arrowfork.svg
+
+
-
diff --git a/src/Mod/TechDraw/Gui/QGIArrow.cpp b/src/Mod/TechDraw/Gui/QGIArrow.cpp
index b6bf29d560..f52377f376 100644
--- a/src/Mod/TechDraw/Gui/QGIArrow.cpp
+++ b/src/Mod/TechDraw/Gui/QGIArrow.cpp
@@ -86,6 +86,12 @@ void QGIArrow::draw() {
path = makeDot(m_size/2.0,m_size/2.0,isFlipped);
} else if (m_style == 4) {
path = makeOpenDot(m_size/2.0,m_size/2.0,isFlipped);
+ } else if (m_style == 5) {
+ if (m_dirMode) {
+ path = makeForkArrow(getDirection(), m_size/2.0,m_size/2.0); //big enough?
+ } else {
+ path = makeForkArrow(m_size/2.0,m_size/2.0,isFlipped); //big enough?
+ }
} else {
path = makeFilledTriangle(m_size,m_size/6.0,isFlipped); //sb a question mark or ???
}
@@ -217,6 +223,41 @@ QPainterPath QGIArrow::makeOpenDot(double length, double width, bool flipped)
return path;
}
+QPainterPath QGIArrow::makeForkArrow(double length, double width, bool flipped)
+{
+//(0,0) is tip of arrow
+ if (flipped) {
+ length *= -1;
+ }
+
+ QPainterPath path;
+ path.moveTo(QPointF(Rez::guiX(length),Rez::guiX(-width)));
+ path.lineTo(QPointF(0.,0.));
+ path.lineTo(QPointF(Rez::guiX(length),Rez::guiX(width)));
+ m_fill = Qt::NoBrush;
+ return path;
+}
+
+QPainterPath QGIArrow::makeForkArrow(Base::Vector3d dir, double length, double width)
+{
+//(0,0) is tip of arrow
+ Base::Vector3d negDir = -dir;
+ Base::Vector3d normDir = dir;
+ negDir.Normalize();
+ normDir.Normalize();
+ Base::Vector3d perp(-normDir.y,normDir.x, 0.0);
+ Base::Vector3d barb1 = normDir * length + perp * width;
+ Base::Vector3d barb2 = normDir * length - perp * width;
+
+ QPainterPath path;
+ path.moveTo(QPointF(Rez::guiX(barb1.x),Rez::guiX(barb1.y)));
+ path.lineTo(QPointF(0.,0.));
+ path.lineTo(QPointF(Rez::guiX(barb2.x),Rez::guiX(barb2.y)));
+ m_fill = Qt::NoBrush;
+ return path;
+}
+
+
int QGIArrow::getPrefArrowStyle()
{
diff --git a/src/Mod/TechDraw/Gui/QGIArrow.h b/src/Mod/TechDraw/Gui/QGIArrow.h
index 758afab897..714f288142 100644
--- a/src/Mod/TechDraw/Gui/QGIArrow.h
+++ b/src/Mod/TechDraw/Gui/QGIArrow.h
@@ -69,7 +69,9 @@ protected:
QPainterPath makeHashMark(Base::Vector3d dir, double length, double width);
QPainterPath makeDot(double length, double width, bool flipped);
QPainterPath makeOpenDot(double length, double width, bool flipped);
-
+ QPainterPath makeForkArrow(double length, double width, bool flipped);
+ QPainterPath makeForkArrow(Base::Vector3d dir, double length, double width);
+
private:
QBrush m_brush;
Qt::BrushStyle m_fill;
diff --git a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc
index 2ffcc25fcb..23457be130 100644
--- a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc
+++ b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc
@@ -39,6 +39,7 @@
icons/arrowfilled.svg
icons/arrowopen.svg
icons/arrowtick.svg
+ icons/arrowfork.svg
icons/actions/techdraw-new-default.svg
icons/actions/techdraw-new-pick.svg
icons/actions/techdraw-view.svg
diff --git a/src/Mod/TechDraw/Gui/Resources/icons/arrowfork.svg b/src/Mod/TechDraw/Gui/Resources/icons/arrowfork.svg
new file mode 100644
index 0000000000..7cb4a8f49f
--- /dev/null
+++ b/src/Mod/TechDraw/Gui/Resources/icons/arrowfork.svg
@@ -0,0 +1,103 @@
+
+
+
+
diff --git a/src/Mod/TechDraw/Gui/TaskLeaderLine.ui b/src/Mod/TechDraw/Gui/TaskLeaderLine.ui
index 9ea57ea1b6..e4ea19d704 100644
--- a/src/Mod/TechDraw/Gui/TaskLeaderLine.ui
+++ b/src/Mod/TechDraw/Gui/TaskLeaderLine.ui
@@ -205,6 +205,15 @@
:/icons/arrowopendot.svg:/icons/arrowopendot.svg
+ -
+
+ Fork
+
+
+
+ :/icons/arrowfork.svg:/icons/arrowfork.svg
+
+
-
@@ -266,6 +275,15 @@
:/icons/arrowopendot.svg:/icons/arrowopendot.svg
+ -
+
+ Fork
+
+
+
+ :/icons/arrowfork.svg:/icons/arrowfork.svg
+
+
-