Merge "Make clipboard UI listen to keyboard visibility changes" into tm-qpr-dev am: 0545b61a78

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

Change-Id: Id4a64c40d24e3e8ff5f463484c8d787b8ce77ba7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Miranda Kephart
2022-07-25 20:39:33 +00:00
committed by Automerger Merge Worker

View File

@@ -169,6 +169,7 @@ public class ClipboardOverlayController {
private Animator mExitAnimator; private Animator mExitAnimator;
private Animator mEnterAnimator; private Animator mEnterAnimator;
private final int mOrientation; private final int mOrientation;
private boolean mKeyboardVisible;
public ClipboardOverlayController(Context context, public ClipboardOverlayController(Context context,
@@ -261,8 +262,22 @@ public class ClipboardOverlayController {
attachWindow(); attachWindow();
withWindowAttached(() -> { withWindowAttached(() -> {
mWindow.setContentView(mView); mWindow.setContentView(mView);
updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets()); WindowInsets insets = mWindowManager.getCurrentWindowMetrics().getWindowInsets();
mView.requestLayout(); mKeyboardVisible = insets.isVisible(WindowInsets.Type.ime());
updateInsets(insets);
mWindow.peekDecorView().getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
WindowInsets insets =
mWindowManager.getCurrentWindowMetrics().getWindowInsets();
boolean keyboardVisible = insets.isVisible(WindowInsets.Type.ime());
if (keyboardVisible != mKeyboardVisible) {
mKeyboardVisible = keyboardVisible;
updateInsets(insets);
}
}
});
mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback( mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback(
new ViewRootImpl.ActivityConfigCallback() { new ViewRootImpl.ActivityConfigCallback() {
@Override @Override
@@ -384,8 +399,6 @@ public class ClipboardOverlayController {
mRemoteCopyChip.setVisibility(View.GONE); mRemoteCopyChip.setVisibility(View.GONE);
} }
withWindowAttached(() -> { withWindowAttached(() -> {
updateInsets(
mWindowManager.getCurrentWindowMetrics().getWindowInsets());
if (mEnterAnimator == null || !mEnterAnimator.isRunning()) { if (mEnterAnimator == null || !mEnterAnimator.isRunning()) {
mView.post(this::animateIn); mView.post(this::animateIn);
} }