diff --git a/apps/graph/list/list_controller.cpp b/apps/graph/list/list_controller.cpp index 781567b23..aedfe2e71 100644 --- a/apps/graph/list/list_controller.cpp +++ b/apps/graph/list/list_controller.cpp @@ -12,7 +12,6 @@ ListController::ListController(Responder * parentResponder, Graph::FunctionStore } View * ListController::view() { - setActiveCell(0); return &m_tableView; } @@ -37,6 +36,19 @@ void ListController::setActiveCell(int index) { app()->setFirstResponder(cell); } +void ListController::didBecomeFirstResponder() { + if (m_activeCell == -1) { + setActiveCell(0); + } else { + if (m_activeCell < m_functionStore->numberOfFunctions()) { + setActiveCell(m_activeCell); + } else { + setActiveCell(m_functionStore->numberOfFunctions()-1); + } + } + assert(m_activeCell >= 0); +} + void ListController::configureFunction(Graph::Function * function) { StackViewController * stack = ((StackViewController *)parentResponder()); m_parameterController.setFunction(function); diff --git a/apps/graph/list/list_controller.h b/apps/graph/list/list_controller.h index 93c4d9b02..794cae6df 100644 --- a/apps/graph/list/list_controller.h +++ b/apps/graph/list/list_controller.h @@ -15,6 +15,7 @@ public: View * view() override; const char * title() const override; bool handleEvent(Ion::Events::Event event) override; + void didBecomeFirstResponder() override; int numberOfCells() override; void willDisplayCellForIndex(View * cell, int index) override;