Merge "Fix some jank issues with the clipboard" into tm-dev
This commit is contained in:
@@ -51,7 +51,6 @@ 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.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
@@ -100,7 +99,6 @@ 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;
|
||||||
@@ -166,10 +164,9 @@ public class ClipboardOverlayController {
|
|||||||
|
|
||||||
private boolean mBlockAttach = false;
|
private boolean mBlockAttach = false;
|
||||||
private Animator mExitAnimator;
|
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,
|
public ClipboardOverlayController(Context context,
|
||||||
BroadcastDispatcher broadcastDispatcher,
|
BroadcastDispatcher broadcastDispatcher,
|
||||||
@@ -255,6 +252,7 @@ public class ClipboardOverlayController {
|
|||||||
mRemoteCopyChip.setIcon(
|
mRemoteCopyChip.setIcon(
|
||||||
Icon.createWithResource(mContext, R.drawable.ic_baseline_devices_24), true);
|
Icon.createWithResource(mContext, R.drawable.ic_baseline_devices_24), true);
|
||||||
mShareChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_share), true);
|
mShareChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_share), true);
|
||||||
|
mOrientation = mContext.getResources().getConfiguration().orientation;
|
||||||
|
|
||||||
attachWindow();
|
attachWindow();
|
||||||
withWindowAttached(() -> {
|
withWindowAttached(() -> {
|
||||||
@@ -266,9 +264,10 @@ public class ClipboardOverlayController {
|
|||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration overrideConfig,
|
public void onConfigurationChanged(Configuration overrideConfig,
|
||||||
int newDisplayId) {
|
int newDisplayId) {
|
||||||
if (mConfigChanges.applyNewConfig(mContext.getResources())) {
|
if (mContext.getResources().getConfiguration().orientation
|
||||||
updateInsets(
|
!= mOrientation) {
|
||||||
mWindowManager.getCurrentWindowMetrics().getWindowInsets());
|
mUiEventLogger.log(CLIPBOARD_OVERLAY_DISMISSED_OTHER);
|
||||||
|
hideImmediate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -366,7 +365,7 @@ public class ClipboardOverlayController {
|
|||||||
Intent remoteCopyIntent = getRemoteCopyIntent(clipData);
|
Intent remoteCopyIntent = getRemoteCopyIntent(clipData);
|
||||||
// Only show remote copy if it's available.
|
// Only show remote copy if it's available.
|
||||||
PackageManager packageManager = mContext.getPackageManager();
|
PackageManager packageManager = mContext.getPackageManager();
|
||||||
if (remoteCopyIntent != null && packageManager.resolveActivity(
|
if (packageManager.resolveActivity(
|
||||||
remoteCopyIntent, PackageManager.ResolveInfoFlags.of(0)) != null) {
|
remoteCopyIntent, PackageManager.ResolveInfoFlags.of(0)) != null) {
|
||||||
mRemoteCopyChip.setVisibility(View.VISIBLE);
|
mRemoteCopyChip.setVisibility(View.VISIBLE);
|
||||||
mRemoteCopyChip.setOnClickListener((v) -> {
|
mRemoteCopyChip.setOnClickListener((v) -> {
|
||||||
@@ -381,7 +380,9 @@ public class ClipboardOverlayController {
|
|||||||
withWindowAttached(() -> {
|
withWindowAttached(() -> {
|
||||||
updateInsets(
|
updateInsets(
|
||||||
mWindowManager.getCurrentWindowMetrics().getWindowInsets());
|
mWindowManager.getCurrentWindowMetrics().getWindowInsets());
|
||||||
mView.post(this::animateIn);
|
if (mEnterAnimator == null || !mEnterAnimator.isRunning()) {
|
||||||
|
mView.post(this::animateIn);
|
||||||
|
}
|
||||||
mView.announceForAccessibility(accessibilityAnnouncement);
|
mView.announceForAccessibility(accessibilityAnnouncement);
|
||||||
});
|
});
|
||||||
mTimeoutHandler.resetTimeout();
|
mTimeoutHandler.resetTimeout();
|
||||||
@@ -652,7 +653,8 @@ public class ClipboardOverlayController {
|
|||||||
if (mAccessibilityManager.isEnabled()) {
|
if (mAccessibilityManager.isEnabled()) {
|
||||||
mDismissButton.setVisibility(View.VISIBLE);
|
mDismissButton.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
getEnterAnimation().start();
|
mEnterAnimator = getEnterAnimation();
|
||||||
|
mEnterAnimator.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void animateOut() {
|
private void animateOut() {
|
||||||
|
|||||||
@@ -90,10 +90,12 @@ public class EditTextActivity extends Activity
|
|||||||
|
|
||||||
@Override // ClipboardManager.OnPrimaryClipChangedListener
|
@Override // ClipboardManager.OnPrimaryClipChangedListener
|
||||||
public void onPrimaryClipChanged() {
|
public void onPrimaryClipChanged() {
|
||||||
hideImeAndFinish();
|
hideIme();
|
||||||
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveToClipboard() {
|
private void saveToClipboard() {
|
||||||
|
hideIme();
|
||||||
Editable editedText = mEditText.getText();
|
Editable editedText = mEditText.getText();
|
||||||
editedText.clearSpans();
|
editedText.clearSpans();
|
||||||
ClipData clip = ClipData.newPlainText("text", editedText);
|
ClipData clip = ClipData.newPlainText("text", editedText);
|
||||||
@@ -101,7 +103,7 @@ public class EditTextActivity extends Activity
|
|||||||
extras.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, mSensitive);
|
extras.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, mSensitive);
|
||||||
clip.getDescription().setExtras(extras);
|
clip.getDescription().setExtras(extras);
|
||||||
mClipboardManager.setPrimaryClip(clip);
|
mClipboardManager.setPrimaryClip(clip);
|
||||||
hideImeAndFinish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void share() {
|
private void share() {
|
||||||
@@ -114,9 +116,8 @@ public class EditTextActivity extends Activity
|
|||||||
startActivity(shareIntent);
|
startActivity(shareIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void hideImeAndFinish() {
|
private void hideIme() {
|
||||||
InputMethodManager imm = getSystemService(InputMethodManager.class);
|
InputMethodManager imm = getSystemService(InputMethodManager.class);
|
||||||
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user