form: do not focus invisible elements.

This commit is contained in:
Christopher Jeffrey 2014-01-16 18:08:59 -06:00
parent f2ec07fd1c
commit 9673eaf517

View File

@ -4397,16 +4397,21 @@ Form.prototype.next = function() {
if (!this._selected) {
this._selected = this._children[0];
if (!this._selected.visible) return this.next();
// return this._selected;
if (this.screen.focused !== this._selected) return this._selected;
}
var i = this._children.indexOf(this._selected);
if (!~i || !this._children[i + 1]) {
return this._selected = this._children[0];
this._selected = this._children[0];
if (!this._selected.visible) return this.next();
return this._selected;
}
return this._selected = this._children[i + 1];
this._selected = this._children[i + 1];
if (!this._selected.visible) return this.next();
return this._selected;
};
Form.prototype.previous = function() {
@ -4414,16 +4419,21 @@ Form.prototype.previous = function() {
if (!this._selected) {
this._selected = this._children[this._children.length - 1];
if (!this._selected.visible) return this.previous();
// return this._selected;
if (this.screen.focused !== this._selected) return this._selected;
}
var i = this._children.indexOf(this._selected);
if (!~i || !this._children[i - 1]) {
return this._selected = this._children[this._children.length - 1];
this._selected = this._children[this._children.length - 1];
if (!this._selected.visible) return this.previous();
return this._selected;
}
return this._selected = this._children[i - 1];
this._selected = this._children[i - 1];
if (!this._selected.visible) return this.previous();
return this._selected;
};
Form.prototype.focusNext = function() {