Merge "Make clipboard listen to keyboard visibility changes" into tm-dev am: 3cbc833571

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

Change-Id: Idbafd70efeac64567edbf259990db8349acb00ee
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Matt Casey
2022-05-10 20:30:39 +00:00
committed by Automerger Merge Worker

View File

@@ -35,6 +35,7 @@ import android.animation.AnimatorSet;
import android.animation.TimeInterpolator; import android.animation.TimeInterpolator;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.annotation.MainThread; import android.annotation.MainThread;
import android.app.ICompatCameraControlCallback;
import android.app.RemoteAction; import android.app.RemoteAction;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ClipData; import android.content.ClipData;
@@ -44,7 +45,9 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Insets; import android.graphics.Insets;
import android.graphics.Rect; import android.graphics.Rect;
@@ -68,6 +71,7 @@ import android.view.InputMonitor;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewRootImpl;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.view.WindowInsets; import android.view.WindowInsets;
import android.view.WindowManager; import android.view.WindowManager;
@@ -85,6 +89,7 @@ import android.widget.TextView;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.PhoneWindow; import com.android.internal.policy.PhoneWindow;
import com.android.settingslib.applications.InterestingConfigChanges;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.broadcast.BroadcastSender; import com.android.systemui.broadcast.BroadcastSender;
@@ -150,6 +155,10 @@ public class ClipboardOverlayController {
private boolean mBlockAttach = false; private boolean mBlockAttach = false;
private Animator mExitAnimator; private Animator mExitAnimator;
/** Tracks config changes that require updating insets */
private final InterestingConfigChanges mConfigChanges = new InterestingConfigChanges(
ActivityInfo.CONFIG_KEYBOARD_HIDDEN);
public ClipboardOverlayController(Context context, public ClipboardOverlayController(Context context,
BroadcastDispatcher broadcastDispatcher, BroadcastDispatcher broadcastDispatcher,
BroadcastSender broadcastSender, BroadcastSender broadcastSender,
@@ -232,6 +241,24 @@ public class ClipboardOverlayController {
mWindow.setContentView(mView); mWindow.setContentView(mView);
updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets()); updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets());
mView.requestLayout(); mView.requestLayout();
mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback(
new ViewRootImpl.ActivityConfigCallback() {
@Override
public void onConfigurationChanged(Configuration overrideConfig,
int newDisplayId) {
if (mConfigChanges.applyNewConfig(mContext.getResources())) {
updateInsets(
mWindowManager.getCurrentWindowMetrics().getWindowInsets());
}
}
@Override
public void requestCompatCameraControl(
boolean showControl, boolean transformationApplied,
ICompatCameraControlCallback callback) {
Log.w(TAG, "unexpected requestCompatCameraControl call");
}
});
}); });
mTimeoutHandler.setOnTimeoutRunnable(() -> { mTimeoutHandler.setOnTimeoutRunnable(() -> {