[graph] Keep Auto when opening and closing Navigate

If the user opens the Navigate menu, then closes it immediately, the
Auto status is not turned off.

Change-Id: I2d1ca0cfdae1b9c957dede7bf9f3c2890dea1bb0
This commit is contained in:
Gabriel Ozouf
2020-11-13 16:44:49 +01:00
committed by LeaNumworks
parent 4233f197d3
commit ea3e3287dc
3 changed files with 19 additions and 3 deletions

View File

@@ -7,7 +7,8 @@ namespace Shared {
FunctionZoomAndPanCurveViewController::FunctionZoomAndPanCurveViewController(Responder * parentResponder, InteractiveCurveViewRange * interactiveRange, CurveView * curveView) :
ZoomAndPanCurveViewController(parentResponder),
m_contentView(curveView),
m_interactiveRange(interactiveRange)
m_interactiveRange(interactiveRange),
m_restoreZoomAuto(false)
{
}
@@ -32,6 +33,19 @@ void FunctionZoomAndPanCurveViewController::didBecomeFirstResponder() {
m_contentView.layoutSubviews();
}
bool FunctionZoomAndPanCurveViewController::handleEvent(Ion::Events::Event event) {
if (event == Ion::Events::Back) {
/* If Auto is still on (because the navigation menu was brought up and
* closed immediately), we need to deactivate it to prevent the range from
* being recomputed in InteractiveCurveViewController::viewWillAppear().
* We need to store it's state to reset it later in viewDidDisappear(), so
* that open navigation without moving doesn't deactivate the Auto. */
m_restoreZoomAuto = m_interactiveRange->zoomAuto();
m_interactiveRange->setZoomAuto(false);
}
return ZoomAndPanCurveViewController::handleEvent(event);
}
void FunctionZoomAndPanCurveViewController::adaptCurveRange(bool viewWillAppear) {
float currentYMin = m_interactiveRange->yMin();
float currentRange = m_interactiveRange->yMax() - m_interactiveRange->yMin();
@@ -43,6 +57,8 @@ void FunctionZoomAndPanCurveViewController::adaptCurveRange(bool viewWillAppear)
} else {
newYMin = m_interactiveRange->yMax() - currentRange*((float)k_standardViewHeight)/(((float)k_standardViewHeight)-((float)ContentView::k_legendHeight));
m_interactiveRange->setOffscreenYAxis(0.f);
m_interactiveRange->setZoomAuto(m_restoreZoomAuto);
m_restoreZoomAuto = false;
}
m_interactiveRange->setYMin(newYMin);
m_contentView.curveView()->reload();

View File

@@ -14,6 +14,7 @@ public:
void viewWillAppear() override;
void viewDidDisappear() override;
void didBecomeFirstResponder() override;
bool handleEvent(Ion::Events::Event event) override;
TELEMETRY_ID("Zoom");
private:
constexpr static KDCoordinate k_standardViewHeight = 175;
@@ -53,6 +54,7 @@ private:
ContentView m_contentView;
InteractiveCurveViewRange * m_interactiveRange;
bool m_restoreZoomAuto;
};
}

View File

@@ -318,9 +318,7 @@ bool InteractiveCurveViewController::normalizeButtonAction() {
}
void InteractiveCurveViewController::navigationButtonAction() {
m_interactiveRange->setZoomAuto(false);
stackController()->push(zoomParameterController());
}
}