in Canvas/CanvasSimple/lib/winjs-4.0.1/js/base.js [11872:11950]
_keyDownHandler: function _KeyboardBehavior_keyDownHandler(ev) {
if (!ev.altKey) {
if (_ElementUtilities._matchesSelector(ev.target, ".win-interactive, .win-interactive *")) {
return;
}
var newIndex = this.currentIndex;
var maxIndex = this._element.children.length - 1;
var rtl = _Global.getComputedStyle(this._element).direction === "rtl";
var leftStr = rtl ? Key.rightArrow : Key.leftArrow;
var rightStr = rtl ? Key.leftArrow : Key.rightArrow;
var targetIndex = this.getAdjacent && this.getAdjacent(newIndex, ev.keyCode);
if (+targetIndex === targetIndex) {
newIndex = targetIndex;
} else {
var modFixedSize = newIndex % this.fixedSize;
if (ev.keyCode === leftStr) {
if (this.fixedDirection === _KeyboardBehavior.FixedDirection.width) {
if (modFixedSize !== 0) {
newIndex--;
}
} else {
if (newIndex >= this.fixedSize) {
newIndex -= this.fixedSize;
}
}
} else if (ev.keyCode === rightStr) {
if (this.fixedDirection === _KeyboardBehavior.FixedDirection.width) {
if (modFixedSize !== this.fixedSize - 1) {
newIndex++;
}
} else {
if (newIndex + this.fixedSize - modFixedSize <= maxIndex) {
newIndex += this.fixedSize;
}
}
} else if (ev.keyCode === Key.upArrow) {
if (this.fixedDirection === _KeyboardBehavior.FixedDirection.height) {
if (modFixedSize !== 0) {
newIndex--;
}
} else {
if (newIndex >= this.fixedSize) {
newIndex -= this.fixedSize;
}
}
} else if (ev.keyCode === Key.downArrow) {
if (this.fixedDirection === _KeyboardBehavior.FixedDirection.height) {
if (modFixedSize !== this.fixedSize - 1) {
newIndex++;
}
} else {
if (newIndex + this.fixedSize - modFixedSize <= maxIndex) {
newIndex += this.fixedSize;
}
}
} else if (ev.keyCode === Key.home) {
newIndex = 0;
} else if (ev.keyCode === Key.end) {
newIndex = this._element.children.length - 1;
}
}
newIndex = Math.max(0, Math.min(this._element.children.length - 1, newIndex));
if (newIndex !== this.currentIndex) {
this._focus(newIndex, ev.keyCode);
// Allow KeyboardBehavior to be nested
if (ev.keyCode === leftStr || ev.keyCode === rightStr || ev.keyCode === Key.upArrow || ev.keyCode === Key.downArrow) {
ev.stopPropagation();
}
ev.preventDefault();
}
}
},