diff --git a/src/ScriptEditor/ui/ScriptEditorRoot.tsx b/src/ScriptEditor/ui/ScriptEditorRoot.tsx index 4effb2cec..47df72880 100644 --- a/src/ScriptEditor/ui/ScriptEditorRoot.tsx +++ b/src/ScriptEditor/ui/ScriptEditorRoot.tsx @@ -102,7 +102,7 @@ class OpenScript { } } -let openScripts: OpenScript[] = []; +const openScripts: OpenScript[] = []; let currentScript: OpenScript | null = null; // Called every time script editor is opened @@ -136,9 +136,9 @@ export function Root(props: IProps): React.ReactElement { const [ramInfoOpen, setRamInfoOpen] = useState(false); // Prevent Crash if script is open on deleted server - openScripts = openScripts.filter((script) => { - return GetServer(script.hostname) !== null; - }); + for (let i=openScripts.length-1;i>=0;i--){ + GetServer(openScripts[i].hostname) === null && openScripts.splice(i,1); + } if (currentScript && GetServer(currentScript.hostname) === null) { currentScript = openScripts[0]; if (currentScript === undefined) currentScript = null; @@ -665,29 +665,29 @@ export function Root(props: IProps): React.ReactElement { }); } - if (openScripts.length > 1) { - openScripts.splice(index, 1); + openScripts.splice(index, 1); + if (openScripts.length === 0) { + currentScript = null; + props.router.toTerminal(); + return; + } + + // Change current script if we closed it + if(wasCurrentScript){ + //Keep the same index unless we were on the last script const indexOffset = openScripts.length === index ? -1 : 0; - - // Change current script if we closed it - currentScript = wasCurrentScript ? openScripts[index + indexOffset] : (currentScript as OpenScript); + currentScript = openScripts[index + indexOffset]; if (editorRef.current !== null) { if (currentScript.model.isDisposed() || !currentScript.model) { regenerateModel(currentScript); } - editorRef.current.setModel(currentScript.model); editorRef.current.setPosition(currentScript.lastPosition); editorRef.current.revealLineInCenter(currentScript.lastPosition.lineNumber); editorRef.current.focus(); } - rerender(); - } else { - // No more scripts are open - openScripts = []; - currentScript = null; - props.router.toTerminal(); } + rerender(); } function onTabUpdate(index: number): void {