Merge "Fix touchable region calculation in NavigationBarController (2nd)" into tm-dev am: baae0bcf9d am: dd35e6b567
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17951295 Change-Id: I546c35796c3be67096ac7de42c9f098695f11629 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -152,6 +152,7 @@ final class NavigationBarController {
|
||||
private boolean mDrawLegacyNavigationBarBackground;
|
||||
|
||||
private final Rect mTempRect = new Rect();
|
||||
private final int[] mTempPos = new int[2];
|
||||
|
||||
Impl(@NonNull InputMethodService inputMethodService) {
|
||||
mService = inputMethodService;
|
||||
@@ -259,21 +260,28 @@ final class NavigationBarController {
|
||||
switch (originalInsets.touchableInsets) {
|
||||
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME:
|
||||
if (inputFrame.getVisibility() == View.VISIBLE) {
|
||||
inputFrame.getBoundsOnScreen(mTempRect);
|
||||
inputFrame.getLocationInWindow(mTempPos);
|
||||
mTempRect.set(mTempPos[0], mTempPos[1],
|
||||
mTempPos[0] + inputFrame.getWidth(),
|
||||
mTempPos[1] + inputFrame.getHeight());
|
||||
touchableRegion = new Region(mTempRect);
|
||||
}
|
||||
break;
|
||||
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_CONTENT:
|
||||
if (inputFrame.getVisibility() == View.VISIBLE) {
|
||||
inputFrame.getBoundsOnScreen(mTempRect);
|
||||
mTempRect.top = originalInsets.contentTopInsets;
|
||||
inputFrame.getLocationInWindow(mTempPos);
|
||||
mTempRect.set(mTempPos[0], originalInsets.contentTopInsets,
|
||||
mTempPos[0] + inputFrame.getWidth() ,
|
||||
mTempPos[1] + inputFrame.getHeight());
|
||||
touchableRegion = new Region(mTempRect);
|
||||
}
|
||||
break;
|
||||
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_VISIBLE:
|
||||
if (inputFrame.getVisibility() == View.VISIBLE) {
|
||||
inputFrame.getBoundsOnScreen(mTempRect);
|
||||
mTempRect.top = originalInsets.visibleTopInsets;
|
||||
inputFrame.getLocationInWindow(mTempPos);
|
||||
mTempRect.set(mTempPos[0], originalInsets.visibleTopInsets,
|
||||
mTempPos[0] + inputFrame.getWidth(),
|
||||
mTempPos[1] + inputFrame.getHeight());
|
||||
touchableRegion = new Region(mTempRect);
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user