diff options
author | Florrie <towerofnix@gmail.com> | 2019-09-15 18:29:17 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2019-09-15 18:29:43 -0300 |
commit | acb6e7bd48e11105b8e57ed703fd75782a2933cc (patch) | |
tree | d46d61b4cd8ee645b07fb24baf6181beeedfb71c | |
parent | d013ad704f9aea12357690d05e2ced1482e5f903 (diff) |
Jump to top/bottom in context menus
Although we don't have any context menu options which start with the letter G yet, if we did, the keyboard selector would (intentionally) take priority and focus that element instead of doing jump to start/ bottom behavior. However, pressing Home/End will always work (once it's implemented).
-rw-r--r-- | todo.txt | 1 | ||||
m--------- | tui-lib | 0 | ||||
-rw-r--r-- | ui.js | 14 |
3 files changed, 12 insertions, 3 deletions
diff --git a/todo.txt b/todo.txt index 6af1370..2163271 100644 --- a/todo.txt +++ b/todo.txt @@ -349,6 +349,7 @@ TODO: If you press any key which should select a particular element of the UI TODO: g/G should work for navigation in context menus! And probably all ListScrollForms, tbh, but I'm kinda weary of introducing new behavior like that to tui-lib. + (Done!) TODO: PageUp/PageDown support is complicated to implement (I've tried) and should come eventually, but for now just make Home/End work as aliases diff --git a/tui-lib b/tui-lib -Subproject d8943db70aab7e7192040caaf0bbf02d5ddf429 +Subproject f3974627bddb9f62132bf54bde3a66c87dbf7b2 diff --git a/ui.js b/ui.js index 972e139..bdc4258 100644 --- a/ui.js +++ b/ui.js @@ -58,6 +58,8 @@ const keyBindings = [ ['isBackspace', telc.isBackspace], ['isMenu', 'm'], ['isMenu', 'f'], + ['isScrollToStart', 'g', {caseless: false}], + ['isScrollToEnd', 'G', {caseless: false}], ['isTogglePause', telc.isSpace], ['isToggleLoop', 'l', {caseless: false}], ['isStop', telc.isEscape], @@ -1216,10 +1218,10 @@ class GrouplikeListingElement extends Form { this.loadParentGrouplike() } else if (telc.isCharacter(keyBuf, '/') || keyBuf[0] === 6) { // '/', ctrl-F this.showJumpElement() - } else if (telc.isCharacter(keyBuf, 'g')) { + } else if (input.isScrollToStart(keyBuf)) { this.form.selectAndShow(this.grouplike.items[0]) this.form.scrollToBeginning() - } else if (telc.isCharacter(keyBuf, 'G')) { + } else if (input.isScrollToEnd(keyBuf)) { this.form.selectAndShow(this.grouplike.items[this.grouplike.items.length - 1]) } else if (keyBuf[0] === 12) { // ctrl-L if (this.grouplike.isTheQueue) { @@ -3049,8 +3051,14 @@ class ContextMenu extends FocusElement { return false } else if (this.keyboardSelector.keyPressed(keyBuf)) { return false + } else if (input.isScrollToStart(keyBuf)) { + this.form.firstInput() + this.form.scrollToBeginning() + } else if (input.isScrollToEnd(keyBuf)) { + this.form.lastInput() + } else { + return super.keyPressed(keyBuf) } - super.keyPressed(keyBuf) } unselected() { |