summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-12-12 12:17:50 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-12-12 16:19:40 +0000
commit5404d930276c61a9da11485fc935f76f57d1647a (patch)
tree67f5208ee714edad91722628b917877d405aad46 /src
parent903e09edb107afa12909629ba7a865435cd293cf (diff)
Fix QXYSeries's best fit line not showing in some coordinate ranges
Use the bottom left point of the domain as a starting point. Amends 28e2fb5a2891bcfb94cee288ec10909a1de29b10. Fixes: QTBUG-108090 Task-number: QTBUG-89453 Change-Id: I28e948373106fa4d00ed132a6dd11afb7ef2ea6f Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi> (cherry picked from commit 2672db21a846c071cb31cfcfb974db5d837cfc42) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/charts/xychart/qxyseries.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/charts/xychart/qxyseries.cpp b/src/charts/xychart/qxyseries.cpp
index fc04e0f0..e01bf017 100644
--- a/src/charts/xychart/qxyseries.cpp
+++ b/src/charts/xychart/qxyseries.cpp
@@ -1907,13 +1907,18 @@ void QXYSeriesPrivate::drawBestFitLine(QPainter *painter, const QRectF &clipRect
if (!ok)
return;
- const qreal x1 = clipRect.x();
+ auto *domain = this->domain();
+ const auto clipOriginX = domain->isReverseX() ? clipRect.right() : clipRect.left();
+ const auto clipOriginY = domain->isReverseY() ? clipRect.top() : clipRect.bottom();
+ const auto domainOrigin = domain->calculateDomainPoint({clipOriginX, clipOriginY});
+
+ const qreal x1 = domainOrigin.x();
const qreal y1 = bestFitLineParams.first * x1 + bestFitLineParams.second;
- QPointF p1 = domain()->calculateGeometryPoint(QPointF(x1, y1), ok);
+ QPointF p1 = domain->calculateGeometryPoint(QPointF(x1, y1), ok);
- const qreal x2 = clipRect.x() + 1;
+ const qreal x2 = domainOrigin.x() + 1;
const qreal y2 = bestFitLineParams.first * x2 + bestFitLineParams.second;
- QPointF p2 = domain()->calculateGeometryPoint(QPointF(x2, y2), ok);
+ QPointF p2 = domain->calculateGeometryPoint(QPointF(x2, y2), ok);
if (ok) {
QLineF bestFitLine { p1, p2 };