[escher] StackViewController: add a method to return the

topViewController
This commit is contained in:
Émilie Feral
2020-03-26 09:36:43 +01:00
parent 15e5f7a285
commit d0c5ac0343
2 changed files with 13 additions and 5 deletions

View File

@@ -18,6 +18,7 @@ public:
int depth();
View * view() override;
ViewController * topViewController();
const char * title() override;
bool handleEvent(Ion::Events::Event event) override;
void didBecomeFirstResponder() override;

View File

@@ -92,6 +92,13 @@ const char * StackViewController::title() {
return vc->title();
}
ViewController * StackViewController::topViewController() {
if (m_numberOfChildren < 1) {
return nullptr;
}
return m_childrenFrame[m_numberOfChildren-1].viewController();
}
void StackViewController::push(ViewController * vc, KDColor textColor, KDColor backgroundColor, KDColor separatorColor) {
Frame frame = Frame(vc, textColor, backgroundColor, separatorColor);
/* Add the frame to the model */
@@ -112,7 +119,7 @@ void StackViewController::push(ViewController * vc, KDColor textColor, KDColor b
void StackViewController::pop() {
assert(m_numberOfChildren > 0);
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
ViewController * vc = topViewController();
if (vc->title() != nullptr && vc->displayParameter() != ViewController::DisplayParameter::DoNotShowOwnTitle) {
m_view.popStack();
}
@@ -131,7 +138,7 @@ void StackViewController::pushModel(Frame frame) {
}
void StackViewController::setupActiveViewController() {
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
ViewController * vc = topViewController();
vc->setParentResponder(this);
m_view.shouldDisplayStackHearders(vc->displayParameter() != ViewController::DisplayParameter::WantsMaximumSpace);
m_view.setContentView(vc->view());
@@ -141,7 +148,7 @@ void StackViewController::setupActiveViewController() {
}
void StackViewController::didBecomeFirstResponder() {
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
ViewController * vc = topViewController();
Container::activeApp()->setFirstResponder(vc);
}
@@ -170,7 +177,7 @@ void StackViewController::viewWillAppear() {
}
}
/* Load the visible controller view */
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
ViewController * vc = topViewController();
if (m_numberOfChildren > 0 && vc) {
m_view.setContentView(vc->view());
m_view.shouldDisplayStackHearders(vc->displayParameter() != ViewController::DisplayParameter::WantsMaximumSpace);
@@ -180,7 +187,7 @@ void StackViewController::viewWillAppear() {
}
void StackViewController::viewDidDisappear() {
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
ViewController * vc = topViewController();
if (m_numberOfChildren > 0 && vc) {
vc->viewDidDisappear();
}