From 89b54d424e1e77f1c9b184dfc1dd33ddce8c9b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Tue, 24 Mar 2020 17:13:22 +0100 Subject: [PATCH] [apps/code] ConsoleController: when becoming first responder, check if a controller is displayed and switch the first responder accordingly --- apps/code/console_controller.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/code/console_controller.cpp b/apps/code/console_controller.cpp index 50867ad81..82baed48a 100644 --- a/apps/code/console_controller.cpp +++ b/apps/code/console_controller.cpp @@ -190,7 +190,16 @@ void ConsoleController::viewWillAppear() { } void ConsoleController::didBecomeFirstResponder() { - Container::activeApp()->setFirstResponder(&m_editCell); + if (viewControllerIsDisplayed(nullptr)) { + Container::activeApp()->setFirstResponder(&m_editCell); + } else { + /* A view controller might be displayed: for example, when pushing the + * console on the stack controller, we auto-import scripts during the + * 'viewWillAppear' and then we set the console as first responder. The + * sandbox or the matplotlib controller might have been pushed in the + * auto-import. */ + Container::activeApp()->setFirstResponder(m_displayedViewController); + } } bool ConsoleController::handleEvent(Ion::Events::Event event) {