From 3109940b46837d5c71b2d273d585bd21a88e7b81 Mon Sep 17 00:00:00 2001 From: Evan Pezent Date: Sun, 6 Jun 2021 21:13:40 -0700 Subject: [PATCH] handle equal axis edge case when user sets x limits --- implot.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/implot.cpp b/implot.cpp index 8505acf..65a6feb 100644 --- a/implot.cpp +++ b/implot.cpp @@ -1453,8 +1453,15 @@ bool BeginPlot(const char* title, const char* x_label, const char* y1_label, con if (ImHasFlag(plot.Flags, ImPlotFlags_Equal)) { double xar = plot.XAxis.GetAspect(); double yar = plot.YAxis[0].GetAspect(); - if (!ImAlmostEqual(xar,yar) && !plot.YAxis[0].IsInputLocked()) - plot.XAxis.SetAspect(yar); + // edge case: user has set x range this frame, so fit y to x so that we honor their request for x range + // NB: because of feedback across several frames, the user's x request may not be perfectly honored + if (gp.NextPlotData.HasXRange) { + plot.YAxis[0].SetAspect(xar); + } + else { + if (!ImAlmostEqual(xar,yar) && !plot.YAxis[0].IsInputLocked()) + plot.XAxis.SetAspect(yar); + } } // AXIS COLORS -----------------------------------------------------------------