From b27551ce4fa44f225d1fa1a424ade3fe95321c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Mon, 4 Dec 2017 12:11:00 +0100 Subject: [PATCH] [code] Fixed bug when importing scripts that draw on screen. The drawing should happen after the ConsoleController is pushed on the screen. This means that the importation of scripts should be done at the ConsoleController's viewWillAppear. Change-Id: I756ac9de30f339dc4f6aa8d3995abea0a46d03b5 --- apps/code/console_controller.cpp | 9 ++++++--- apps/code/console_controller.h | 1 + apps/code/menu_controller.cpp | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/code/console_controller.cpp b/apps/code/console_controller.cpp index 92e0bc8db..344ab3dc6 100644 --- a/apps/code/console_controller.cpp +++ b/apps/code/console_controller.cpp @@ -19,6 +19,7 @@ ConsoleController::ConsoleController(Responder * parentResponder, ScriptStore * TextFieldDelegate(), MicroPython::ExecutionEnvironment(), m_rowHeight(KDText::charSize(k_fontSize).height()), + m_importScriptsWhenViewAppears(false), m_selectableTableView(this, this, 0, 1, 0, Metric::CommonRightMargin, 0, Metric::TitleBarExternHorizontalMargin, this, this, true, true, KDColorWhite), m_editCell(this, this), m_pythonHeap(nullptr), @@ -47,9 +48,7 @@ bool ConsoleController::loadPythonEnvironment(bool autoImportScripts) { } MicroPython::init(m_pythonHeap, m_pythonHeap + k_pythonHeapSize); MicroPython::registerScriptProvider(m_scriptStore); - if (autoImportScripts) { - autoImport(); - } + m_importScriptsWhenViewAppears = autoImportScripts; return true; } @@ -94,6 +93,10 @@ void ConsoleController::removeExtensionIfAny(char * name) { void ConsoleController::viewWillAppear() { assert(pythonEnvironmentIsLoaded()); m_sandboxIsDisplayed = false; + if (m_importScriptsWhenViewAppears) { + m_importScriptsWhenViewAppears = false; + autoImport(); + } m_selectableTableView.reloadData(); m_selectableTableView.selectCellAtLocation(0, m_consoleStore.numberOfLines()); m_editCell.setEditing(true); diff --git a/apps/code/console_controller.h b/apps/code/console_controller.h index 068ebdc30..1037ca76e 100644 --- a/apps/code/console_controller.h +++ b/apps/code/console_controller.h @@ -76,6 +76,7 @@ private: StackViewController * stackViewController(); bool copyCurrentLineToClipboard(); int m_rowHeight; + bool m_importScriptsWhenViewAppears; ConsoleStore m_consoleStore; SelectableTableView m_selectableTableView; ConsoleLineCell m_cells[k_numberOfLineCells]; diff --git a/apps/code/menu_controller.cpp b/apps/code/menu_controller.cpp index 0b9ebe701..807c10978 100644 --- a/apps/code/menu_controller.cpp +++ b/apps/code/menu_controller.cpp @@ -130,8 +130,8 @@ void MenuController::loadPythonIfNeeded() { void MenuController::openConsoleWithScriptAtIndex(int scriptIndex) { reloadConsole(); if (m_consoleController.loadPythonEnvironment(false)) { - m_consoleController.autoImportScriptAtIndex(scriptIndex, true); stackViewController()->push(&m_consoleController); + m_consoleController.autoImportScriptAtIndex(scriptIndex, true); } m_reloadConsoleWhenBecomingFirstResponder = true; }