diff --git a/src/app/files/fileManager.js b/src/app/files/fileManager.js index a50cd38dfb..61e2e27372 100644 --- a/src/app/files/fileManager.js +++ b/src/app/files/fileManager.js @@ -102,10 +102,7 @@ class FileManager extends Plugin { closeFile (name) { delete this.openedFiles[name] - if (Object.keys(this.openedFiles).length) { - this.switchFile(Object.keys(this.openedFiles)[0]) - } else { - this.editor.displayEmptyReadOnlySession() + if (!Object.keys(this.openedFiles).length) { this._deps.config.set('currentFile', '') this.events.emit('noFileSelected') } @@ -274,7 +271,6 @@ class FileManager extends Plugin { if (fileList.length) { _switchFile(browserProvider.type + '/' + fileList[0]) } else { - this.editor.displayEmptyReadOnlySession() this.events.emit('noFileSelected') } }) diff --git a/src/app/panels/main-view.js b/src/app/panels/main-view.js index c57e8e8acd..1640a0279e 100644 --- a/src/app/panels/main-view.js +++ b/src/app/panels/main-view.js @@ -82,6 +82,9 @@ export class MainView { self._components.contextView.show() self._view.mainPanel.style.display = 'none' }) + self.tabProxy.event.on('tabCountChanged', (count) => { + if (!count) this.editor.displayEmptyReadOnlySession() + }) self.data = { _layout: { top: { diff --git a/src/app/panels/tab-proxy.js b/src/app/panels/tab-proxy.js index ff9e55599d..7240e05f16 100644 --- a/src/app/panels/tab-proxy.js +++ b/src/app/panels/tab-proxy.js @@ -110,6 +110,13 @@ export class TabProxy { } } + switchToActiveTab () { + const active = this._view.filetabs.active + if (active && this._handlers[active]) { + this.switchTab(active) + } + } + showTab (name) { this._view.filetabs.activateTab(name) } @@ -133,6 +140,7 @@ export class TabProxy { removeTab (name) { this._view.filetabs.removeTab(name) delete this._handlers[name] + this.switchToActiveTab() } addHandler (type, fn) { @@ -143,9 +151,11 @@ export class TabProxy { this._view.filetabs = yo`` this._view.filetabs.addEventListener('tabClosed', (event) => { if (this._handlers[event.detail]) this._handlers[event.detail].close() + this.event.emit('tabCountChanged', this._view.filetabs.tabs.length) }) this._view.filetabs.addEventListener('tabActivated', (event) => { if (this._handlers[event.detail]) this._handlers[event.detail].switchTo() + this.event.emit('tabCountChanged', this._view.filetabs.tabs.length) }) this._view.filetabs.canAdd = false