Merge "Remove remote input after ime insets animation end" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
75bd2f3305
@@ -131,6 +131,7 @@ public class RemoteInputController {
|
||||
*/
|
||||
public void removeRemoteInput(NotificationEntry entry, Object token) {
|
||||
Objects.requireNonNull(entry);
|
||||
if (entry.mRemoteEditImeVisible) return;
|
||||
|
||||
pruneWeakThenRemoveAndContains(null /* contains */, entry /* remove */, token);
|
||||
|
||||
|
||||
@@ -179,6 +179,8 @@ public final class NotificationEntry extends ListEntry {
|
||||
private boolean mShelfIconVisible;
|
||||
private boolean mIsAlerting;
|
||||
|
||||
public boolean mRemoteEditImeVisible;
|
||||
|
||||
/**
|
||||
* @param sbn the StatusBarNotification from system server
|
||||
* @param ranking also from system server
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.systemui.statusbar.policy;
|
||||
|
||||
import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.annotation.Nullable;
|
||||
@@ -50,6 +52,8 @@ import android.view.OnReceiveContentListener;
|
||||
import android.view.View;
|
||||
import android.view.ViewAnimationUtils;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowInsets;
|
||||
import android.view.WindowInsetsAnimation;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.inputmethod.CompletionInfo;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
@@ -61,6 +65,8 @@ import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
@@ -76,6 +82,7 @@ import com.android.systemui.statusbar.phone.LightBarController;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
@@ -135,6 +142,27 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
|
||||
|
||||
mEditText = (RemoteEditText) getChildAt(0);
|
||||
mEditText.setInnerFocusable(false);
|
||||
mEditText.setWindowInsetsAnimationCallback(
|
||||
new WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) {
|
||||
@NonNull
|
||||
@Override
|
||||
public WindowInsets onProgress(@NonNull WindowInsets insets,
|
||||
@NonNull List<WindowInsetsAnimation> runningAnimations) {
|
||||
return insets;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnd(@NonNull WindowInsetsAnimation animation) {
|
||||
super.onEnd(animation);
|
||||
if (animation.getTypeMask() == WindowInsets.Type.ime()) {
|
||||
mEntry.mRemoteEditImeVisible =
|
||||
mEditText.getRootWindowInsets().isVisible(WindowInsets.Type.ime());
|
||||
if (!mEntry.mRemoteEditImeVisible && !mEditText.mShowImeOnInputConnection) {
|
||||
mController.removeRemoteInput(mEntry, mToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected Intent prepareRemoteInputFromText() {
|
||||
|
||||
Reference in New Issue
Block a user