diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 060760a2f940..db89cea385b7 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -28,12 +28,14 @@ import android.animation.ValueAnimator; import android.annotation.Nullable; import android.content.Context; import android.content.res.Configuration; +import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.Region; import android.graphics.Region.Op; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Handler; +import android.os.RemoteException; import android.util.AttributeSet; import android.util.Slog; import android.view.Display; @@ -164,6 +166,9 @@ public class DividerView extends FrameLayout implements OnTouchListener, int mDividerPositionX; int mDividerPositionY; + private final Matrix mTmpMatrix = new Matrix(); + private final float[] mTmpValues = new float[9]; + // The view is removed or in the process of been removed from the system. private boolean mRemoved; @@ -249,6 +254,22 @@ public class DividerView extends FrameLayout implements OnTouchListener, } }; + private Runnable mUpdateEmbeddedMatrix = () -> { + if (getViewRootImpl() == null) { + return; + } + if (isHorizontalDivision()) { + mTmpMatrix.setTranslate(0, mDividerPositionY - mDividerInsets); + } else { + mTmpMatrix.setTranslate(mDividerPositionX - mDividerInsets, 0); + } + mTmpMatrix.getValues(mTmpValues); + try { + getViewRootImpl().getAccessibilityEmbeddedConnection().setScreenMatrix(mTmpValues); + } catch (RemoteException e) { + } + }; + public DividerView(Context context) { this(context, null); } @@ -1084,6 +1105,10 @@ public class DividerView extends FrameLayout implements OnTouchListener, t.setPosition(dividerCtrl, mDividerPositionX - mDividerInsets, 0); } } + if (getViewRootImpl() != null) { + mHandler.removeCallbacks(mUpdateEmbeddedMatrix); + mHandler.post(mUpdateEmbeddedMatrix); + } } void setResizeDimLayer(Transaction t, boolean primary, float alpha) { |