summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qtriangulatingstroker.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-04 14:03:10 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-04 14:03:11 +0200
commit464a43d43c2bb2440d4ad745bc134e0dac10872c (patch)
treeb1c27b1d1c11f9c43bd2e62e1fd955bc6f89029f /src/gui/painting/qtriangulatingstroker.cpp
parent0208cac94fbd79fc563c903e2b973d79f9644b82 (diff)
parent877ef0594d94f48bf063446b1f8a4b5e1941a8cd (diff)
Merge 5.9 into 5.9.0v5.9.0-beta4
Diffstat (limited to 'src/gui/painting/qtriangulatingstroker.cpp')
-rw-r--r--src/gui/painting/qtriangulatingstroker.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gui/painting/qtriangulatingstroker.cpp b/src/gui/painting/qtriangulatingstroker.cpp
index 6243f1e2a4..3f7b01ddbe 100644
--- a/src/gui/painting/qtriangulatingstroker.cpp
+++ b/src/gui/painting/qtriangulatingstroker.cpp
@@ -525,6 +525,7 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, c
int count = path.elementCount();
bool cosmetic = qt_pen_is_cosmetic(pen, hints);
+ bool implicitClose = path.hasImplicitClose();
m_points.reset();
m_types.reset();
@@ -558,8 +559,14 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, c
if (count < 2)
return;
- const qreal *endPts = pts + (count<<1);
+ bool needsClose = false;
+ if (implicitClose) {
+ if (pts[0] != pts[count * 2 - 2] || pts[1] != pts[count * 2 - 1])
+ needsClose = true;
+ }
+ const qreal *firstPts = pts;
+ const qreal *endPts = pts + (count<<1);
m_dash_stroker.begin(this);
if (!types) {
@@ -605,6 +612,8 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, c
}
}
}
+ if (needsClose)
+ m_dash_stroker.lineTo(firstPts[0], firstPts[1]);
m_dash_stroker.end();
}