« get me outta code hell

Show which item in a listing is selected, even if the listing isn't selected - mtui - Music Text User Interface - user-friendly command line music player
about summary refs log tree commit diff
path: root/ui.js
diff options
context:
space:
mode:
authorFlorrie <towerofnix@gmail.com>2018-09-13 17:36:56 -0300
committerFlorrie <towerofnix@gmail.com>2018-09-13 17:38:38 -0300
commit7000c1109f66b7591e6056a82f270f57bf8ae6b5 (patch)
tree010590ef77cb773e664877ed5da404d03de8675a /ui.js
parent936bed812be431e831a9139fe48b4f8c76011a38 (diff)
Show which item in a listing is selected, even if the listing isn't selected
This is foundation for actively highlighting the result of a jump-to
while typing. (Since your focus is on the ListingJumpElement, there
needs to be some way to see which item would be selected in the
GrouplikeListing. That's what this commit implements.)

This also looks pretty nifty when you press M to open the context menu,
if I do say so myself.
Diffstat (limited to 'ui.js')
-rw-r--r--ui.js11
1 files changed, 10 insertions, 1 deletions
diff --git a/ui.js b/ui.js
index 1d8d2da..73a9732 100644
--- a/ui.js
+++ b/ui.js
@@ -949,8 +949,17 @@ class GrouplikeItemElement extends Button {
   }
 
   drawTo(writable) {
-    if (this.isSelected) {
+    const isCurrentInput = this.parent.inputs[this.parent.curIndex] === this
+    // This line's commented out for now, so it'll show as selected (but
+    // dimmed) even if you don't have the listing selected. To change that,
+    // uncomment this and add it to the isCurrentInput line.
+    // const isListingSelected = this.parent.parent.isSelected
+    const isSelfSelected = this.isSelected
+
+    if (isSelfSelected) {
       writable.write(ansi.invert())
+    } else if (isCurrentInput) {
+      writable.write(ansi.setAttributes([ansi.A_INVERT, ansi.A_DIM]))
     }
 
     writable.write(ansi.moveCursor(this.absTop, this.absLeft))