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) {  |