diff options
author | Florrie <towerofnix@gmail.com> | 2018-07-06 12:41:47 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2018-07-06 12:41:47 -0300 |
commit | 0d2a80095d5ffaf9479680c8e819eeda69587321 (patch) | |
tree | ecbec402b323a9f98b2a4ecb4dd77e1612603fe5 | |
parent | 58be1516971a86fa6c9383cbe5bbf761a71e7c00 (diff) |
Undo close tab
-rw-r--r-- | ui.js | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/ui.js b/ui.js index 762914e..3bd62b5 100644 --- a/ui.js +++ b/ui.js @@ -342,7 +342,7 @@ class AppElement extends FocusElement { } else if (keyBuf.equals(Buffer.from([20]))) { // ctrl-T this.cloneCurrentTab() } else if (keyBuf.equals(Buffer.from([23]))) { // ctrl-W - this.tabber.closeTab(this.tabber.currentElement) + this.closeCurrentTab() } else if (telc.isCharacter(keyBuf, 'u')) { this.undoManager.undoLastAction() } else if (telc.isCharacter(keyBuf, 'U')) { @@ -370,6 +370,21 @@ class AppElement extends FocusElement { listing.loadGrouplike(grouplike) } + closeCurrentTab() { + const listing = this.tabber.currentElement + let index + this.undoManager.pushAction({ + activate: () => { + index = this.tabber.currentElementIndex + this.tabber.closeTab(this.tabber.currentElement) + }, + undo: () => { + this.tabber.addTab(listing, index) + this.tabber.selectTab(listing) + } + }) + } + shuffleQueue() { const queue = this.queueGrouplike const index = queue.items.indexOf(this.playingTrack) + 1 // This is 0 if no track is playing @@ -1235,9 +1250,10 @@ class Tabber extends FocusElement { } } - addTab(element) { - this.tabberElements.splice(this.currentElementIndex + 1, 0, element) - this.addChild(element, this.currentElementIndex + 1) + addTab(element, index = this.currentElementIndex) { + element.visible = false + this.tabberElements.splice(index + 1, 0, element) + this.addChild(element, index + 1) this.listElement.buildItems() } |