[apps] VariableBoxController: fix bug in right layouts of variable cells.

When the last dislayed page of VariableBoxController was 'Function', the
next time we displayed the symbol page, the expressions on the right of
cells were false the one of functions.
This commit is contained in:
Émilie Feral
2018-11-15 15:30:51 +01:00
parent 17abf68de1
commit 2d36f02053
2 changed files with 13 additions and 5 deletions

View File

@@ -23,7 +23,7 @@ VariableBoxController::VariableBoxController() :
}
void VariableBoxController::viewWillAppear() {
m_currentPage = Page::RootMenu;
assert(m_currentPage == Page::RootMenu);
NestedMenuController::viewWillAppear();
}
@@ -44,7 +44,10 @@ void VariableBoxController::viewDidDisappear() {
m_leafCells[i].setLayout(Layout());
m_leafCells[i].setAccessoryLayout(Layout());
}
resetMemoization();
/* We reset the page when view disappears rather than when it appears because
* subview layout is done before viewWillAppear. If the page at that point is
* wrong, the memoized layouts are going be filled with wrong layouts. */
setPage(Page::RootMenu);
}
bool VariableBoxController::handleEvent(Ion::Events::Event event) {
@@ -149,9 +152,14 @@ VariableBoxController::Page VariableBoxController::pageAtIndex(int index) {
return pages[index];
}
void VariableBoxController::setPage(Page page) {
m_currentPage = page;
resetMemoization();
}
bool VariableBoxController::selectSubMenu(int selectedRow) {
m_selectableTableView.deselectTable();
m_currentPage = pageAtIndex(selectedRow);
setPage(pageAtIndex(selectedRow));
bool selectSubMenu = NestedMenuController::selectSubMenu(selectedRow);
if (displayEmptyController()) {
return true;
@@ -164,9 +172,8 @@ bool VariableBoxController::returnToPreviousMenu() {
pop();
} else {
m_selectableTableView.deselectTable();
resetMemoization();
}
m_currentPage = Page::RootMenu;
setPage(Page::RootMenu);
return NestedMenuController::returnToPreviousMenu();
}

View File

@@ -40,6 +40,7 @@ private:
ExpressionTableCellWithExpression * leafCellAtIndex(int index) override;
MessageTableCellWithChevron * nodeCellAtIndex(int index) override;
Page pageAtIndex(int index);
void setPage(Page page);
bool selectSubMenu(int selectedRow) override;
bool returnToPreviousMenu() override;
bool selectLeaf(int selectedRow) override;