diff options
author | Florrie <towerofnix@gmail.com> | 2018-07-04 21:19:19 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2018-07-04 21:19:21 -0300 |
commit | 4ddc3ece7d713633347f2702c30806b4a2e18ca4 (patch) | |
tree | 4177d66568d6138c2208b5b794ee932e403f3ac6 | |
parent | 1076bd5e65658a0e846a7892cee787ade7660bb2 (diff) |
Remove FocusElement.isFocused, add isSelected
FocusElement.isSelected behaves a little bit differently - basically it's true if the current selected element is that element, OR any of the ancestors of the current selected element is that element. It's also a getter, so you can't directly override it (assigning to el.isSelected won't work).
-rw-r--r-- | ui/form/Button.js | 2 | ||||
-rw-r--r-- | ui/form/FocusBox.js | 4 | ||||
-rw-r--r-- | ui/form/FocusElement.js | 11 |
3 files changed, 8 insertions, 9 deletions
diff --git a/ui/form/Button.js b/ui/form/Button.js index cf7262f..1f1c537 100644 --- a/ui/form/Button.js +++ b/ui/form/Button.js @@ -21,7 +21,7 @@ module.exports = class Button extends FocusElement { } drawTo(writable) { - if (this.isFocused) { + if (this.isSelected) { writable.write(ansi.invert()) } diff --git a/ui/form/FocusBox.js b/ui/form/FocusBox.js index 51e961b..69b5bf5 100644 --- a/ui/form/FocusBox.js +++ b/ui/form/FocusBox.js @@ -19,13 +19,13 @@ module.exports = class FocusBox extends FocusElement { } drawTo(writable) { - if (this.isFocused) { + if (this.isSelected) { writable.write(ansi.invert()) } } didRenderTo(writable) { - if (this.isFocused) { + if (this.isSelected) { writable.write(ansi.resetAttributes()) } } diff --git a/ui/form/FocusElement.js b/ui/form/FocusElement.js index 79a8afc..9061838 100644 --- a/ui/form/FocusElement.js +++ b/ui/form/FocusElement.js @@ -9,20 +9,14 @@ module.exports = class FocusElement extends DisplayElement { this.cursorVisible = false this.cursorX = 0 this.cursorY = 0 - - this.isFocused = false } focused() { // Should be overridden in subclasses. - - this.isFocused = true } unfocused() { // Should be overridden in subclasses. - - this.isFocused = false } get selectable() { @@ -41,6 +35,11 @@ module.exports = class FocusElement extends DisplayElement { // http://stackoverflow.com/a/11432632/4633828 } + get isSelected() { + const selected = this.root.selected + return selected && [selected, ...selected.directAncestors].includes(this) + } + get absCursorX() { return this.absX + this.cursorX } get absCursorY() { return this.absY + this.cursorY } } |