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

Commit c4e2ae21 authored by Miranda Kephart's avatar Miranda Kephart
Browse files

Make clipboard UI listen to keyboard visibility changes

Bug: 236885397
Fix: 236885397
Test: manual
Change-Id: I980095d3e785cd6d28f47185d8e38d7653a7dbc3
parent d238f79f
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -169,6 +169,7 @@ public class ClipboardOverlayController {
    private Animator mExitAnimator;
    private Animator mEnterAnimator;
    private final int mOrientation;
    private boolean mKeyboardVisible;


    public ClipboardOverlayController(Context context,
@@ -261,8 +262,22 @@ public class ClipboardOverlayController {
        attachWindow();
        withWindowAttached(() -> {
            mWindow.setContentView(mView);
            updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets());
            mView.requestLayout();
            WindowInsets insets = mWindowManager.getCurrentWindowMetrics().getWindowInsets();
            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(
                    new ViewRootImpl.ActivityConfigCallback() {
                        @Override
@@ -384,8 +399,6 @@ public class ClipboardOverlayController {
            mRemoteCopyChip.setVisibility(View.GONE);
        }
        withWindowAttached(() -> {
            updateInsets(
                    mWindowManager.getCurrentWindowMetrics().getWindowInsets());
            if (mEnterAnimator == null || !mEnterAnimator.isRunning()) {
                mView.post(this::animateIn);
            }