mirror of
https://github.com/embarklabs/neo-blessed.git
synced 2025-01-11 03:25:45 +00:00
fix textbox focusing.
This commit is contained in:
parent
87aef67274
commit
b04f8d04b2
@ -145,6 +145,7 @@ function Screen(options) {
|
|||||||
this.focused = null;
|
this.focused = null;
|
||||||
this.clickable = [];
|
this.clickable = [];
|
||||||
this.input = [];
|
this.input = [];
|
||||||
|
this.grabKeys = false;
|
||||||
|
|
||||||
this.alloc();
|
this.alloc();
|
||||||
|
|
||||||
@ -173,8 +174,11 @@ Screen.prototype._listenMouse = function(el, hover) {
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (el) {
|
if (el) {
|
||||||
if (!hover) this.clickable.push(el);
|
if (!hover) {
|
||||||
else this.hover.push(el);
|
if (!~this.clickable.indexOf(el)) this.clickable.push(el);
|
||||||
|
} else {
|
||||||
|
if (!~this.hover.indexOf(el)) this.hover.push(el);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._listenedMouse) return;
|
if (this._listenedMouse) return;
|
||||||
@ -213,7 +217,9 @@ Screen.prototype._listenKeys = function(el) {
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (el) {
|
if (el) {
|
||||||
|
if (!~this.input.indexOf(el)) {
|
||||||
this.input.push(el);
|
this.input.push(el);
|
||||||
|
}
|
||||||
//if (this.mouse)
|
//if (this.mouse)
|
||||||
//el.on('click', function() {
|
//el.on('click', function() {
|
||||||
// el.focus();
|
// el.focus();
|
||||||
@ -227,7 +233,7 @@ Screen.prototype._listenKeys = function(el) {
|
|||||||
if (~self.input.indexOf(self.focused)) {
|
if (~self.input.indexOf(self.focused)) {
|
||||||
self.focused.emit('keypress', ch, key);
|
self.focused.emit('keypress', ch, key);
|
||||||
}
|
}
|
||||||
if (!self._grabKeys) {
|
if (!self.grabKeys) {
|
||||||
self.emit('keypress', ch, key);
|
self.emit('keypress', ch, key);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -506,6 +512,15 @@ function Element(options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.content = options.content || '';
|
this.content = options.content || '';
|
||||||
|
|
||||||
|
if (options.label) {
|
||||||
|
this.append(new Text({
|
||||||
|
screen: this.screen,
|
||||||
|
content: options.label,
|
||||||
|
left: 2,
|
||||||
|
top: this.border ? 0 : -1
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Element.prototype.__proto__ = Node.prototype;
|
Element.prototype.__proto__ = Node.prototype;
|
||||||
@ -1337,13 +1352,7 @@ function Textbox(options) {
|
|||||||
Input.call(this, options);
|
Input.call(this, options);
|
||||||
this.value = options.value || '';
|
this.value = options.value || '';
|
||||||
this.content = options.content || '';
|
this.content = options.content || '';
|
||||||
if (options.label) {
|
this.screen._listenKeys(this);
|
||||||
// TODO: Make sure negative relative coords work.
|
|
||||||
this.append(new Text({
|
|
||||||
content: options.label,
|
|
||||||
top: -1 - (this.border ? 1 : 0)
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Textbox.prototype.__proto__ = Input.prototype;
|
Textbox.prototype.__proto__ = Input.prototype;
|
||||||
@ -1351,7 +1360,7 @@ Textbox.prototype.__proto__ = Input.prototype;
|
|||||||
Textbox.prototype.setInput = function(callback) {
|
Textbox.prototype.setInput = function(callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this.screen._grabKeys = true;
|
this.screen.grabKeys = true;
|
||||||
|
|
||||||
this.focus();
|
this.focus();
|
||||||
// this.screen.program.saveCursor();
|
// this.screen.program.saveCursor();
|
||||||
@ -1366,7 +1375,7 @@ Textbox.prototype.setInput = function(callback) {
|
|||||||
self.screen.program.hideCursor();
|
self.screen.program.hideCursor();
|
||||||
// Wait for global keypress event to fire.
|
// Wait for global keypress event to fire.
|
||||||
process.nextTick(function() {
|
process.nextTick(function() {
|
||||||
self.screen._grabKeys = false;
|
self.screen.grabKeys = false;
|
||||||
});
|
});
|
||||||
return err
|
return err
|
||||||
? callback(err)
|
? callback(err)
|
||||||
|
@ -177,6 +177,7 @@ screen.on('element focus', function(old, cur) {
|
|||||||
|
|
||||||
var input = new blessed.Textbox({
|
var input = new blessed.Textbox({
|
||||||
mouse: true,
|
mouse: true,
|
||||||
|
label: ' My Input ',
|
||||||
content: '',
|
content: '',
|
||||||
fg: 4,
|
fg: 4,
|
||||||
bg: -1,
|
bg: -1,
|
||||||
@ -190,7 +191,7 @@ var input = new blessed.Textbox({
|
|||||||
width: '30%',
|
width: '30%',
|
||||||
height: 3,
|
height: 3,
|
||||||
right: 0,
|
right: 0,
|
||||||
top: 0
|
top: 2
|
||||||
});
|
});
|
||||||
|
|
||||||
screen.append(input);
|
screen.append(input);
|
||||||
@ -203,12 +204,12 @@ screen.on('keypress', function(ch, key) {
|
|||||||
}
|
}
|
||||||
if (key.name === 'i') {
|
if (key.name === 'i') {
|
||||||
return input.setInput(function(err, value) {
|
return input.setInput(function(err, value) {
|
||||||
screen.children[0].setContent(value);
|
if (value) screen.children[0].setContent(value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (key.name === 'e') {
|
if (key.name === 'e') {
|
||||||
return input.setEditor(function(err, value) {
|
return input.setEditor(function(err, value) {
|
||||||
screen.children[0].setContent(value);
|
if (value) screen.children[0].setContent(value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (key.name === 'escape' || key.name === 'q') {
|
if (key.name === 'escape' || key.name === 'q') {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user