From edc2e1b7f58ca623cd9e58cd80b5c3619332f04b Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 25 May 2022 22:23:33 -0700 Subject: [PATCH] Scripting: Pass back old buffers when reopening view --- src/platform/qt/ScriptingController.cpp | 5 +++++ src/platform/qt/ScriptingController.h | 2 ++ src/platform/qt/ScriptingView.cpp | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/src/platform/qt/ScriptingController.cpp b/src/platform/qt/ScriptingController.cpp index 2113df29f..033df225f 100644 --- a/src/platform/qt/ScriptingController.cpp +++ b/src/platform/qt/ScriptingController.cpp @@ -87,6 +87,10 @@ void ScriptingController::clearController() { void ScriptingController::reset() { CoreController::Interrupter interrupter(m_controller); + for (ScriptingTextBuffer* buffer : m_buffers) { + delete buffer; + } + m_buffers.clear(); mScriptContextDetachCore(&m_scriptContext); mScriptContextDeinit(&m_scriptContext); m_engines.clear(); @@ -105,6 +109,7 @@ void ScriptingController::runCode(const QString& code) { mScriptTextBuffer* ScriptingController::createTextBuffer(void* context) { ScriptingController* self = static_cast(context); ScriptingTextBuffer* buffer = new ScriptingTextBuffer(self); + self->m_buffers.append(buffer); emit self->textBufferCreated(buffer); return buffer->textBuffer(); } diff --git a/src/platform/qt/ScriptingController.h b/src/platform/qt/ScriptingController.h index 0ccd9f67d..0981fcab2 100644 --- a/src/platform/qt/ScriptingController.h +++ b/src/platform/qt/ScriptingController.h @@ -33,6 +33,7 @@ public: bool load(VFileDevice& vf, const QString& name); mScriptContext* context() { return &m_scriptContext; } + QList textBuffers() { return m_buffers; } signals: void log(const QString&); @@ -58,6 +59,7 @@ private: mScriptEngineContext* m_activeEngine = nullptr; QHash m_engines; + QList m_buffers; std::shared_ptr m_controller; }; diff --git a/src/platform/qt/ScriptingView.cpp b/src/platform/qt/ScriptingView.cpp index 834b1abed..1252f285c 100644 --- a/src/platform/qt/ScriptingView.cpp +++ b/src/platform/qt/ScriptingView.cpp @@ -35,6 +35,10 @@ ScriptingView::ScriptingView(ScriptingController* controller, ConfigController* m_mruFiles = m_config->getMRU(ConfigController::MRU::Script); updateMRU(); + + for (ScriptingTextBuffer* buffer : controller->textBuffers()) { + addTextBuffer(buffer); + } } void ScriptingView::submitRepl() {