mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-19 05:40:38 +01:00
[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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -224,6 +224,7 @@ VariableBoxController::VariableBoxController(Context * context) :
|
||||
}
|
||||
|
||||
void VariableBoxController::didBecomeFirstResponder() {
|
||||
StackViewController::didBecomeFirstResponder();
|
||||
app()->setFirstResponder(&m_contentViewController);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user