diff options
| author | 2020-05-15 22:38:34 +0000 | |
|---|---|---|
| committer | 2020-05-15 22:38:34 +0000 | |
| commit | 4acfd1f0f296d52affd77db18bcad5f77df0244a (patch) | |
| tree | c93e90ffe70df2511999dc7b9f432a2c91ea4ecc | |
| parent | 81eefd515f7a4bd052ef1892fb02a85058c8d4b8 (diff) | |
| parent | 0f4db1b1e24c49eac4dfc2a6c79ff66737ee18ca (diff) | |
Merge "Set DividerView accessibility embedded matrix to surface position" into rvc-dev
| -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) {  |