Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ecbe69d authored by Niklas Brunlid's avatar Niklas Brunlid Committed by Henrik Baard
Browse files

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
parent f7f5732e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
    }