Merge "Only use system gesture insets for exclusion rects with root ime view"

This commit is contained in:
Winson Chung
2020-10-29 18:57:26 +00:00
committed by Android (Google) Code Review

View File

@@ -102,6 +102,7 @@ import android.view.ViewRootImpl;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowInsets.Side;
import android.view.WindowInsets.Type;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.CompletionInfo;
@@ -135,7 +136,7 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Collections;
import java.util.ArrayList;
import java.util.Objects;
/**
@@ -883,10 +884,19 @@ public class InputMethodService extends AbstractInputMethodService {
/** Set region of the keyboard to be avoided from back gesture */
private void setImeExclusionRect(int visibleTopInsets) {
View inputFrameRootView = mInputFrame.getRootView();
Rect r = new Rect(0, visibleTopInsets, inputFrameRootView.getWidth(),
inputFrameRootView.getHeight());
inputFrameRootView.setSystemGestureExclusionRects(Collections.singletonList(r));
View rootView = mInputFrame.getRootView();
android.graphics.Insets systemGesture =
rootView.getRootWindowInsets().getInsets(Type.systemGestures());
ArrayList<Rect> exclusionRects = new ArrayList<>();
exclusionRects.add(new Rect(0,
visibleTopInsets,
systemGesture.left,
rootView.getHeight()));
exclusionRects.add(new Rect(rootView.getWidth() - systemGesture.right,
visibleTopInsets,
rootView.getWidth(),
rootView.getHeight()));
rootView.setSystemGestureExclusionRects(exclusionRects);
}
/**