[escher] Reorder actions to first do all frame layouts and then all

"become first responder" (Thereby, enable to select a cell in
becomefirstresponder without any weird scrolling due to wrong framing)

Change-Id: Ie5ca7555fce3575dcf0488e124adf0677155c383
This commit is contained in:
Émilie Feral
2017-01-31 15:53:24 +01:00
parent f3e9e29045
commit 29678a23db
6 changed files with 13 additions and 13 deletions

View File

@@ -122,8 +122,9 @@ bool NodeNavigationController::selectSubMenu(Node * selectedNode) {
}
void NodeNavigationController::didBecomeFirstResponder() {
m_stack.resetStack();
m_listViewController.setNodeModel(nodeModel());
StackViewController::didBecomeFirstResponder();
m_stack.resetStack();
m_listViewController.setFirstSelectedRow(0);
app()->setFirstResponder(&m_listViewController);
}

View File

@@ -224,6 +224,7 @@ VariableBoxController::VariableBoxController(Context * context) :
}
void VariableBoxController::didBecomeFirstResponder() {
StackViewController::didBecomeFirstResponder();
app()->setFirstResponder(&m_contentViewController);
}

View File

@@ -19,13 +19,11 @@ App::App(Container * container, ViewController * rootViewController, const char
void App::setWindow(Window * window) {
View * view = m_modalViewController.view();
assert(m_modalViewController.app() == this);
window->setContentView(view);
if (m_firstResponder == nullptr) {
setFirstResponder(&m_modalViewController);
}
assert(m_modalViewController.app() == this);
window->setContentView(view);
window->redraw();
}

View File

@@ -115,8 +115,8 @@ void ModalViewController::displayModalViewController(ViewController * vc, float
m_currentModalViewController = vc;
vc->setParentResponder(this);
m_previousResponder = app()->firstResponder();
app()->setFirstResponder(vc);
m_contentView.presentModalView(vc->view(), verticalAlignment, horizontalAlignment, topMargin, leftMargin, bottomMargin, rightMargin);
app()->setFirstResponder(vc);
}
void ModalViewController::dismissModalViewController() {

View File

@@ -110,6 +110,10 @@ void StackViewController::setupActiveViewController() {
}
void StackViewController::didBecomeFirstResponder() {
if (m_rootViewController != nullptr) {
push(m_rootViewController, m_textColor, m_backgroundColor, m_separatorColor);
m_rootViewController = nullptr;
}
ViewController * vc = m_children[m_numberOfChildren-1];
app()->setFirstResponder(vc);
}
@@ -123,9 +127,5 @@ bool StackViewController::handleEvent(Ion::Events::Event event) {
}
View * StackViewController::view() {
if (m_rootViewController != nullptr) {
push(m_rootViewController, m_textColor, m_backgroundColor, m_separatorColor);
m_rootViewController = nullptr;
}
return &m_view;
}

View File

@@ -113,6 +113,9 @@ void TabViewController::setSelectedTab(int8_t i) {
void TabViewController::didBecomeFirstResponder() {
setSelectedTab(m_activeChildIndex);
if (m_activeChildIndex < 0) {
setActiveTab(0);
}
}
void TabViewController::didResignFirstResponder() {
@@ -128,9 +131,6 @@ View * TabViewController::view() {
m_view.m_tabView.addTabNamed(m_children[i]->title());
}
}
if (m_activeChildIndex < 0) {
setActiveTab(0);
}
return &m_view;
}