diff options
-rw-r--r-- | todo.txt | 5 | ||||
-rw-r--r-- | ui.js | 13 |
2 files changed, 10 insertions, 8 deletions
diff --git a/todo.txt b/todo.txt index bd75904..c99c70d 100644 --- a/todo.txt +++ b/todo.txt @@ -4,10 +4,8 @@ TODO: A way to see the path of the currently selected item in any grouplike (Done!) TODO: A "shuffle queue" button! - (Half-way done -- the functionality is there, press "S", but there's no - button for it yet.) - TODO: A "clear queue" button. + (Done! Press S or C, or choose the option from the menubar.) TODO: A way to jump to an item with a particular name. Probably press "/". It'd be nice if the closest match got highlighted while you were typing. @@ -509,3 +507,4 @@ TODO: Revisit labels and notes features! They're commented out for now :P TODO: Pressing "Reveal" should focus the main listing. This is prrrrobably a case of context menu selection-restoring being a pain. + (Done!) diff --git a/ui.js b/ui.js index 5c586dd..0172fc2 100644 --- a/ui.js +++ b/ui.js @@ -3751,6 +3751,7 @@ class ContextMenu extends FocusElement { button.keyboardIdentifier = item.keyboardIdentifier || item.label if (item.action) { button.on('pressed', async () => { + this.restoreSelection() if (await item.action() === 'reload') { this.reload() } else { @@ -3797,6 +3798,7 @@ class ContextMenu extends FocusElement { keyPressed(keyBuf) { if (telc.isEscape(keyBuf) || telc.isBackspace(keyBuf)) { + this.restoreSelection() this.close() return false } else if (this.keyboardSelector.keyPressed(keyBuf)) { @@ -3819,24 +3821,25 @@ class ContextMenu extends FocusElement { } if (this.visible) { - const newlySelected = this.root.selectedElement this.close() - newlySelected.root.select(newlySelected) } } close(remove = true) { this.clearItems() this.visible = false - if (this.selectedBefore.root.select) { - this.selectedBefore.root.select(this.selectedBefore) - } if (remove && this.parent) { this.parent.removeChild(this) this.emit('closed') } } + restoreSelection() { + if (this.selectedBefore.root.select) { + this.selectedBefore.root.select(this.selectedBefore) + } + } + clearItems() { // Abhorrent hack - just erases children from memory. Leaves children // thinking they've still got a parent, though. (Necessary to avoid crazy |