From ae157d928b7f14e6913d3b361ebd05a45644030d Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Fri, 22 Dec 2023 12:56:09 +0100 Subject: [PATCH] FIXED fix implementation for issue #110 from commit https://github.com/jkriege2/JKQtPlotter/commit/99ff39a3d62d778117c161ce50e36a61460973af The solution did not work with half-open absoluteRanges! --- lib/jkqtplotter/jkqtplotter.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/jkqtplotter/jkqtplotter.cpp b/lib/jkqtplotter/jkqtplotter.cpp index 4e3cb11353e..67f1786a876 100644 --- a/lib/jkqtplotter/jkqtplotter.cpp +++ b/lib/jkqtplotter/jkqtplotter.cpp @@ -763,14 +763,14 @@ void JKQTPlotter::correctZoomRectForPanning(QRectF &zoomRect) const if (pos>absPos) return absPos; return pos; }; - const double absXMin=plotter->x2p(plotter->getAbsoluteXMin()); - const double absYMin=plotter->y2p(plotter->getAbsoluteYMin()); - const double absXMax=plotter->x2p(plotter->getAbsoluteXMax()); - const double absYMax=plotter->y2p(plotter->getAbsoluteYMax()); - if (JKQTPIsOKFloat(absXMin)&&JKQTPIsOKFloat(absXMax)) zoomRect.moveLeft(correctForAbsoluteLeft(zoomRect.left(), std::min(absXMin, absXMax))); - if (JKQTPIsOKFloat(absYMin)&&JKQTPIsOKFloat(absYMax)) zoomRect.moveTop(correctForAbsoluteLeft(zoomRect.top(), std::min(absYMin, absYMax))); - if (JKQTPIsOKFloat(absXMin)&&JKQTPIsOKFloat(absXMax)) zoomRect.moveRight(correctForAbsoluteRight(zoomRect.right(), std::max(absXMin, absXMax))); - if (JKQTPIsOKFloat(absYMin)&&JKQTPIsOKFloat(absYMax)) zoomRect.moveBottom(correctForAbsoluteRight(zoomRect.bottom(), std::max(absYMin, absYMax))); + const double absLeft=plotter->x2p((plotter->getXAxis()->getInverted())? plotter->getAbsoluteXMax() : plotter->getAbsoluteXMin()); + const double absTop=plotter->y2p((plotter->getYAxis()->getInverted())? plotter->getAbsoluteYMin() : plotter->getAbsoluteYMax()); + const double absRight=plotter->x2p((plotter->getXAxis()->getInverted())? plotter->getAbsoluteXMin() : plotter->getAbsoluteXMax()); + const double absBottom=plotter->y2p((plotter->getYAxis()->getInverted())? plotter->getAbsoluteYMax() : plotter->getAbsoluteYMin()); + if (JKQTPIsOKFloat(absLeft)) zoomRect.moveLeft(correctForAbsoluteLeft(zoomRect.left(), absLeft)); + if (JKQTPIsOKFloat(absTop)) zoomRect.moveTop(correctForAbsoluteLeft(zoomRect.top(), absTop)); + if (JKQTPIsOKFloat(absRight)) zoomRect.moveRight(correctForAbsoluteRight(zoomRect.right(), absRight)); + if (JKQTPIsOKFloat(absBottom)) zoomRect.moveBottom(correctForAbsoluteRight(zoomRect.bottom(), absBottom)); }