diff --git a/lib/widget.js b/lib/widget.js index e986636..d128441 100644 --- a/lib/widget.js +++ b/lib/widget.js @@ -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() {