Avoid overflow in focus fudge calculation
When comparing decoding the next View to get focus, the last-resort calculation (magic number and square of distance between the View corners) could overflow, giving a false positive. This causes the focus to jump around in certain cases. Change from int to long to avoid in the foreseeable future. Test: Manual - Use a phone with an 18:9 ratio (1080*2160) - make FrameworksCoreTests - adb install -r out/target/product/aurora/data/app/FrameworksCoreTests/FrameworksCoreTests.apk - adb shell am instrument -r -w -e class android.widget.scroll.ScrollViewButtonsAndLabelsTest#testArrowScrollUpOffScreenVerticalFadingEdge com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner Change-Id: I119cd66f563cfa312c2304bb910c27075e674e59
This commit is contained in:
committed by
Henrik Baard
parent
f7f5732e2c
commit
2ecbe69ddd
@@ -530,7 +530,7 @@ public class FocusFinder {
|
||||
* axis distances. Warning: this fudge factor is finely tuned, be sure to
|
||||
* run all focus tests if you dare tweak it.
|
||||
*/
|
||||
int getWeightedDistanceFor(int majorAxisDistance, int minorAxisDistance) {
|
||||
long getWeightedDistanceFor(long majorAxisDistance, long minorAxisDistance) {
|
||||
return 13 * majorAxisDistance * majorAxisDistance
|
||||
+ minorAxisDistance * minorAxisDistance;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user