mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[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:
committed by
LeaNumworks
parent
4233f197d3
commit
ea3e3287dc
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -318,9 +318,7 @@ bool InteractiveCurveViewController::normalizeButtonAction() {
|
||||
}
|
||||
|
||||
void InteractiveCurveViewController::navigationButtonAction() {
|
||||
m_interactiveRange->setZoomAuto(false);
|
||||
stackController()->push(zoomParameterController());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user