Merge "Fix some jank issues with the clipboard" into tm-dev am: dc2426af92 am: 06fb357585
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18627759 Change-Id: I1817bcc0ffd4b95f89b221f0c3d3e6ddad5f7192 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -51,7 +51,6 @@ import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
@@ -100,7 +99,6 @@ import android.widget.TextView;
|
||||
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.internal.policy.PhoneWindow;
|
||||
import com.android.settingslib.applications.InterestingConfigChanges;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.broadcast.BroadcastSender;
|
||||
@@ -166,10 +164,9 @@ public class ClipboardOverlayController {
|
||||
|
||||
private boolean mBlockAttach = false;
|
||||
private Animator mExitAnimator;
|
||||
private Animator mEnterAnimator;
|
||||
private final int mOrientation;
|
||||
|
||||
/** Tracks config changes that require updating insets */
|
||||
private final InterestingConfigChanges mConfigChanges = new InterestingConfigChanges(
|
||||
ActivityInfo.CONFIG_KEYBOARD_HIDDEN);
|
||||
|
||||
public ClipboardOverlayController(Context context,
|
||||
BroadcastDispatcher broadcastDispatcher,
|
||||
@@ -255,6 +252,7 @@ public class ClipboardOverlayController {
|
||||
mRemoteCopyChip.setIcon(
|
||||
Icon.createWithResource(mContext, R.drawable.ic_baseline_devices_24), true);
|
||||
mShareChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_share), true);
|
||||
mOrientation = mContext.getResources().getConfiguration().orientation;
|
||||
|
||||
attachWindow();
|
||||
withWindowAttached(() -> {
|
||||
@@ -266,9 +264,10 @@ public class ClipboardOverlayController {
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration overrideConfig,
|
||||
int newDisplayId) {
|
||||
if (mConfigChanges.applyNewConfig(mContext.getResources())) {
|
||||
updateInsets(
|
||||
mWindowManager.getCurrentWindowMetrics().getWindowInsets());
|
||||
if (mContext.getResources().getConfiguration().orientation
|
||||
!= mOrientation) {
|
||||
mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER);
|
||||
hideImmediate();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -366,7 +365,7 @@ public class ClipboardOverlayController {
|
||||
Intent remoteCopyIntent = getRemoteCopyIntent(clipData);
|
||||
// Only show remote copy if it's available.
|
||||
PackageManager packageManager = mContext.getPackageManager();
|
||||
if (remoteCopyIntent != null && packageManager.resolveActivity(
|
||||
if (packageManager.resolveActivity(
|
||||
remoteCopyIntent, PackageManager.ResolveInfoFlags.of(0)) != null) {
|
||||
mRemoteCopyChip.setVisibility(View.VISIBLE);
|
||||
mRemoteCopyChip.setOnClickListener((v) -> {
|
||||
@@ -381,7 +380,9 @@ public class ClipboardOverlayController {
|
||||
withWindowAttached(() -> {
|
||||
updateInsets(
|
||||
mWindowManager.getCurrentWindowMetrics().getWindowInsets());
|
||||
mView.post(this::animateIn);
|
||||
if (mEnterAnimator == null || !mEnterAnimator.isRunning()) {
|
||||
mView.post(this::animateIn);
|
||||
}
|
||||
mView.announceForAccessibility(accessibilityAnnouncement);
|
||||
});
|
||||
mTimeoutHandler.resetTimeout();
|
||||
@@ -652,7 +653,8 @@ public class ClipboardOverlayController {
|
||||
if (mAccessibilityManager.isEnabled()) {
|
||||
mDismissButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
getEnterAnimation().start();
|
||||
mEnterAnimator = getEnterAnimation();
|
||||
mEnterAnimator.start();
|
||||
}
|
||||
|
||||
private void animateOut() {
|
||||
|
||||
@@ -90,10 +90,12 @@ public class EditTextActivity extends Activity
|
||||
|
||||
@Override // ClipboardManager.OnPrimaryClipChangedListener
|
||||
public void onPrimaryClipChanged() {
|
||||
hideImeAndFinish();
|
||||
hideIme();
|
||||
finish();
|
||||
}
|
||||
|
||||
private void saveToClipboard() {
|
||||
hideIme();
|
||||
Editable editedText = mEditText.getText();
|
||||
editedText.clearSpans();
|
||||
ClipData clip = ClipData.newPlainText("text", editedText);
|
||||
@@ -101,7 +103,7 @@ public class EditTextActivity extends Activity
|
||||
extras.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, mSensitive);
|
||||
clip.getDescription().setExtras(extras);
|
||||
mClipboardManager.setPrimaryClip(clip);
|
||||
hideImeAndFinish();
|
||||
finish();
|
||||
}
|
||||
|
||||
private void share() {
|
||||
@@ -114,9 +116,8 @@ public class EditTextActivity extends Activity
|
||||
startActivity(shareIntent);
|
||||
}
|
||||
|
||||
private void hideImeAndFinish() {
|
||||
private void hideIme() {
|
||||
InputMethodManager imm = getSystemService(InputMethodManager.class);
|
||||
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user