diff --git a/src/gui/painting/qcosmeticstroker.cpp b/src/gui/painting/qcosmeticstroker.cpp index 6c1be87c9ac..f99edc61949 100644 --- a/src/gui/painting/qcosmeticstroker.cpp +++ b/src/gui/painting/qcosmeticstroker.cpp @@ -356,6 +356,11 @@ bool QCosmeticStroker::clipLine(qreal &x1, qreal &y1, qreal &x2, qreal &y2) void QCosmeticStroker::drawLine(const QPointF &p1, const QPointF &p2) { + if (p1 == p2) { + drawPoints(&p1, 1); + return; + } + QPointF start = p1 * state->matrix; QPointF end = p2 * state->matrix; diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp index 9354f9f6343..13716940b10 100644 --- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp +++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp @@ -279,6 +279,7 @@ private slots: void drawTextWithComplexBrush(); void QTBUG26013_squareCapStroke(); + void QTBUG25153_drawLine(); private: void fillData(); @@ -4388,6 +4389,26 @@ void tst_QPainter::QTBUG26013_squareCapStroke() } } +void tst_QPainter::QTBUG25153_drawLine() +{ + QImage image(2, 2, QImage::Format_RGB32); + + QVector styles; + styles << Qt::FlatCap << Qt::SquareCap << Qt::RoundCap; + + foreach (Qt::PenCapStyle style, styles) { + image.fill(0xffffffff); + QPainter p(&image); + p.setPen(QPen(Qt::black, 0, Qt::SolidLine, style)); + p.drawLine(QLineF(0, 0, 0, 0)); + p.end(); + + QCOMPARE(image.pixel(0, 0), 0xff000000); + QCOMPARE(image.pixel(0, 1), 0xffffffff); + QCOMPARE(image.pixel(1, 0), 0xffffffff); + } +} + QTEST_MAIN(tst_QPainter) #include "tst_qpainter.moc"