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

Commit f0107102 authored by Lucas Dupin's avatar Lucas Dupin Committed by Automerger Merge Worker
Browse files

Merge "Fix clipping while scrolling" into rvc-dev am: 4c6f3ff3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11889960

Change-Id: I3726096568f444d43fdea56840d022b62c493cb0
parents 3f94c62f 4c6f3ff3
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.util.animation

import android.content.Context
import android.graphics.Canvas
import android.graphics.PointF
import android.graphics.Rect
import android.util.AttributeSet
@@ -37,6 +38,7 @@ class TransitionLayout @JvmOverloads constructor(
    defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {

    private val boundsRect = Rect()
    private val originalGoneChildrenSet: MutableSet<Int> = mutableSetOf()
    private val originalViewAlphas: MutableMap<Int, Float> = mutableMapOf()
    private var measureAsConstraint: Boolean = false
@@ -147,16 +149,26 @@ class TransitionLayout @JvmOverloads constructor(
        }
    }

    override fun dispatchDraw(canvas: Canvas?) {
        val clip = !boundsRect.isEmpty
        if (clip) {
            canvas?.save()
            canvas?.clipRect(boundsRect)
        }
        super.dispatchDraw(canvas)
        if (clip) {
            canvas?.restore()
        }
    }

    private fun updateBounds() {
        val layoutLeft = left
        val layoutTop = top
        setLeftTopRightBottom(layoutLeft, layoutTop, layoutLeft + currentState.width,
                layoutTop + currentState.height)
        val bounds = clipBounds ?: Rect()
        bounds.set(left, top, right, bottom)
        clipBounds = bounds
        translationX = currentState.translation.x
        translationY = currentState.translation.y
        boundsRect.set(0, 0, (width + translationX).toInt(), (height + translationY).toInt())
    }

    /**