diff --git a/apps/remix-ide/src/app/panels/tab-proxy.js b/apps/remix-ide/src/app/panels/tab-proxy.js index 019283d09c..b5be530bf3 100644 --- a/apps/remix-ide/src/app/panels/tab-proxy.js +++ b/apps/remix-ide/src/app/panels/tab-proxy.js @@ -14,6 +14,7 @@ export class TabProxy { this.data = {} this._view = {} this._handlers = {} + this.loadedTabs = [] globalRegistry.get('themeModule').api.events.on('themeChanged', (theme) => { // update invert for all icons @@ -136,9 +137,52 @@ export class TabProxy { if (this._handlers[name]) return var slash = name.split('/') - if (!title) { - title = name.indexOf('/') !== -1 ? slash[slash.length - 1] : name + const tabPath = slash.reverse() + const tempTitle = [] + + for(let i = 0; i < tabPath.length; i++) { + tempTitle.push(tabPath[i]) + const formatPath = [...tempTitle].reverse() + + if(!title) { + const index = this.loadedTabs.findIndex(({ title }) => title === formatPath.join('/')) + + if (index === -1) { + title = formatPath.join('/') + const titleLength = formatPath.length + this.loadedTabs.push({ + name, + title + }) + formatPath.shift() + if (formatPath.length > 0) { + const duplicateTabName = this.loadedTabs.find(({ title }) => title === formatPath.join('/')).name + const duplicateTabPath = duplicateTabName.split('/') + const duplicateTabFormatPath = [...duplicateTabPath].reverse() + const duplicateTabTitle = duplicateTabFormatPath.slice(0, titleLength).reverse().join('/') + + this.loadedTabs.push({ + name: duplicateTabName, + title: duplicateTabTitle + }) + this._view.filetabs.removeTab(duplicateTabName) + this._view.filetabs.addTab({ + id: duplicateTabName, + title: duplicateTabTitle, + icon, + tooltip: duplicateTabName + }) + } + break; + } + } else { + this.loadedTabs.push({ + name, + title + }) + } } + this._view.filetabs.addTab({ id: name, title, @@ -153,6 +197,7 @@ export class TabProxy { this._view.filetabs.removeTab(name) delete this._handlers[name] this.switchToActiveTab() + this.loadedTabs = this.loadedTabs.filter(tab => tab.name !== name) } addHandler (type, fn) {