From d723b5fa1b362abf1e22d3a160fdadc95f472b98 Mon Sep 17 00:00:00 2001 From: GitSquared Date: Sun, 25 Nov 2018 17:59:25 +0100 Subject: [PATCH] :bug: Fix fsDisp not following tabs & tab titles --- src/_renderer.js | 23 +++++++++++++++++++++++ src/classes/filesystem.class.js | 29 +++++++++++++++++------------ src/classes/terminal.class.js | 12 ++++++++++++ 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/src/_renderer.js b/src/_renderer.js index 3d7c681..b764114 100644 --- a/src/_renderer.js +++ b/src/_renderer.js @@ -295,6 +295,9 @@ initGreeter = () => { }) }; window.currentTerm = 0; + window.term[0].onprocesschange = p => { + document.getElementById("shell_tab0").innerText = "MAIN - "+p; + }; // Prevent losing hardware keyboard focus on the terminal when using touch keyboard window.onmouseup = (e) => { window.term[window.currentTerm].term.focus(); @@ -316,6 +319,14 @@ initGreeter = () => { window.themeChanger = (theme) => { window.focusShellTab(0); + for (let i = 1; i <= 4; i++) { + if (typeof window.term[i] !== undefined) { + window.term[i].socket.close(); + delete window.term[i]; + document.getElementById("shell_tab"+i).innerText = "EMPTY"; + document.getElementById("terminal"+i).innerHTML = ""; + } + } let src = path.join(themesDir, theme+".json" || settings.theme+".json"); // Always get fresh theme files @@ -348,6 +359,11 @@ window.themeChanger = (theme) => { }) }; window.currentTerm = 0; + window.term[0].onprocesschange = p => { + document.getElementById("shell_tab0").innerText = "MAIN - "+p; + }; + + initMods(); window.fsDisp = new FilesystemDisplay({ parentId: "filesystem" @@ -383,6 +399,8 @@ window.focusShellTab = (number) => { window.term[number].fit(); window.term[number].term.focus(); window.term[number].resendCWD(); + + window.fsDisp.followTab(); } else if (number > 0 && number <= 4 && window.term[number] !== null) { window.term[number] = null; @@ -401,12 +419,17 @@ window.focusShellTab = (number) => { }); window.term[number].onclose = e => { + delete window.term[number].onprocesschange; document.getElementById("shell_tab"+number).innerText = "EMPTY"; document.getElementById("terminal"+number).innerHTML = ""; delete window.term[number]; window.focusShellTab(0); }; + window.term[number].onprocesschange = p => { + document.getElementById("shell_tab"+number).innerText = `#${number} - ${p}`; + }; + document.getElementById("shell_tab"+number).innerText = "::"+port; setTimeout(() => { window.focusShellTab(number); diff --git a/src/classes/filesystem.class.js b/src/classes/filesystem.class.js index 25446fd..115cbd2 100644 --- a/src/classes/filesystem.class.js +++ b/src/classes/filesystem.class.js @@ -55,20 +55,25 @@ class FilesystemDisplay {

CANNOT ACCESS CURRENT WORKING DIRECTORY

`; }; - window.term[window.currentTerm].oncwdchange = (cwd) => { - if (cwd) { - if (this._fsWatcher) { - this._fsWatcher.close(); - } - if (cwd.startsWith("FALLBACK |-- ")) { - this.readFS(cwd.slice(13)); - this._noTracking = true; - } else { - this.readFS(cwd); - this.watchFS(cwd); + this.followTab = () => { + let num = window.currentTerm; + + window.term[num].oncwdchange = (cwd) => { + if (cwd && window.currentTerm === num) { + if (this._fsWatcher) { + this._fsWatcher.close(); + } + if (cwd.startsWith("FALLBACK |-- ")) { + this.readFS(cwd.slice(13)); + this._noTracking = true; + } else { + this.readFS(cwd); + this.watchFS(cwd); + } } - } + }; }; + this.followTab(); this.watchFS = (dir) => { if (this._fsWatcher) { diff --git a/src/classes/terminal.class.js b/src/classes/terminal.class.js index 80284b3..d7dc5e1 100644 --- a/src/classes/terminal.class.js +++ b/src/classes/terminal.class.js @@ -85,6 +85,11 @@ class Terminal { this.cwd = "FALLBACK |-- "+args[1]; this.oncwdchange(this.cwd); break; + case "New process": + if (this.onprocesschange) { + this.onprocesschange(args[1]); + } + break; default: return; } @@ -239,6 +244,7 @@ class Terminal { }); }; this._nextTickUpdateTtyCWD = false; + this._nextTickUpdateProcess = false; this._tick = setInterval(() => { if (this._nextTickUpdateTtyCWD && this._disableCWDtracking === false) { this._nextTickUpdateTtyCWD = false; @@ -258,6 +264,11 @@ class Terminal { } }); } + + if (this.renderer && this._nextTickUpdateProcess) { + this.renderer.send("terminal_channel-"+this.port, "New process", this.tty._file); + this._nextTickUpdateProcess = false; + } }, 1000); this.tty = this.Pty.spawn(opts.shell || "bash", opts.params || [], { @@ -315,6 +326,7 @@ class Terminal { }); this.tty.on("data", (data) => { this._nextTickUpdateTtyCWD = true; + this._nextTickUpdateProcess = true; try { ws.send(data); } catch (e) { -- GitLab