From b087c428ba492715626a7875185f9ba18fb30b3e Mon Sep 17 00:00:00 2001 From: liam4 Date: Mon, 3 Jul 2017 21:13:50 -0300 Subject: Improve cursor display - Whether the cursor is displayed or not is now based on the cursorVisible property rather than whether cursorX and cursorY are set or not. - The actual shell cursor is now invisible... this is objectively an act of Evil, though! This doesn't look like too hard to fix, thankfully. - A new cleanCursor function has been added to ansi.js. --- ui/Root.js | 6 ++---- ui/form/FocusElement.js | 1 + ui/form/TextInput.js | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'ui') diff --git a/ui/Root.js b/ui/Root.js index b170f99..fc494a7 100644 --- a/ui/Root.js +++ b/ui/Root.js @@ -50,9 +50,7 @@ module.exports = class Root extends DisplayElement { // Render the cursor, based on the cursorX and cursorY of the currently // selected element. if ( - this.selected && - typeof this.selected.cursorX === 'number' && - typeof this.selected.cursorY === 'number' && + this.selected && this.selected.cursorVisible && (Date.now() - this.cursorBlinkOffset) % 1000 < 500 ) { writable.write(ansi.moveCursor( @@ -61,7 +59,7 @@ module.exports = class Root extends DisplayElement { writable.write('I') writable.write(ansi.resetAttributes()) } - writable.write(ansi.moveCursor(0, 0)) + writable.write(ansi.hideCursor()) } cursorMoved() { diff --git a/ui/form/FocusElement.js b/ui/form/FocusElement.js index 5967e26..18f13bf 100644 --- a/ui/form/FocusElement.js +++ b/ui/form/FocusElement.js @@ -6,6 +6,7 @@ module.exports = class FocusElement extends DisplayElement { constructor() { super() + this.cursorVisible = false this.cursorX = 0 this.cursorY = 0 diff --git a/ui/form/TextInput.js b/ui/form/TextInput.js index fc59cbb..a10a26f 100644 --- a/ui/form/TextInput.js +++ b/ui/form/TextInput.js @@ -11,6 +11,7 @@ module.exports = class TextInput extends FocusElement { super() this.value = '' + this.cursorVisible = true this.cursorIndex = 0 this.scrollChars = 0 } -- cgit 1.3.0-6-gf8a5