Merge "Enabled (asymmetric) tab selection in GridView" into oc-dev am: 3653aed87b
am: f742df0ba1
Change-Id: I2d84da452136d2dda45d0f16034ecd35397179f7
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java
index 82071d7..fcb44af 100644
--- a/core/java/android/widget/GridView.java
+++ b/core/java/android/widget/GridView.java
@@ -1718,20 +1718,17 @@
break;
case KeyEvent.KEYCODE_TAB:
- // XXX Sometimes it is useful to be able to TAB through the items in
+ // TODO: Sometimes it is useful to be able to TAB through the items in
// a GridView sequentially. Unfortunately this can create an
// asymmetry in TAB navigation order unless the list selection
// always reverts to the top or bottom when receiving TAB focus from
- // another widget. Leaving this behavior disabled for now but
- // perhaps it should be configurable (and more comprehensive).
- if (false) {
- if (event.hasNoModifiers()) {
- handled = resurrectSelectionIfNeeded()
- || sequenceScroll(FOCUS_FORWARD);
- } else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
- handled = resurrectSelectionIfNeeded()
- || sequenceScroll(FOCUS_BACKWARD);
- }
+ // another widget.
+ if (event.hasNoModifiers()) {
+ handled = resurrectSelectionIfNeeded()
+ || sequenceScroll(FOCUS_FORWARD);
+ } else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
+ handled = resurrectSelectionIfNeeded()
+ || sequenceScroll(FOCUS_BACKWARD);
}
break;
}
@@ -1991,7 +1988,7 @@
if (!mStackFromBottom) {
rowStart = childIndex - (childIndex % mNumColumns);
- rowEnd = Math.max(rowStart + mNumColumns - 1, count);
+ rowEnd = Math.min(rowStart + mNumColumns - 1, count);
} else {
rowEnd = count - 1 - (invertedIndex - (invertedIndex % mNumColumns));
rowStart = Math.max(0, rowEnd - mNumColumns + 1);