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

Commit 4ca06c1e authored by Josh Tsuji's avatar Josh Tsuji
Browse files

Only take vertical, upward velocity into account for escaping the dismiss target.

Fixes: 157180669
Test: manual
Change-Id: I407ccc7d74906c83c65a93f2e12ad6423b161a32
parent f21036b4
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ abstract class MagnetizedObject<T : Any>(
     * to the target. If this velocity is reached, the object will be freed even if it wasn't moved
     * outside the magnetic field radius.
     */
    var flingUnstuckFromTargetMinVelocity = 1000f
    var flingUnstuckFromTargetMinVelocity = 4000f

    /**
     * Sets the maximum X velocity above which the object will not stick to the target. Even if the
@@ -402,9 +402,10 @@ abstract class MagnetizedObject<T : Any>(
            cancelAnimations()

            if (objectStuckToTarget) {
                if (hypot(velX, velY) > flingUnstuckFromTargetMinVelocity) {
                    // If the object is stuck, but it was forcefully flung away from the target,
                    // tell the listener so the object can be animated out of the target.
                if (-velY > flingUnstuckFromTargetMinVelocity) {
                    // If the object is stuck, but it was forcefully flung away from the target in
                    // the upward direction, tell the listener so the object can be animated out of
                    // the target.
                    magnetListener.onUnstuckFromTarget(
                            targetObjectIsStuckTo!!, velX, velY, wasFlungOut = true)
                } else {