Merge "Fix touchable region calculation in NavigationBarController (2nd)" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
baae0bcf9d
@@ -152,6 +152,7 @@ final class NavigationBarController {
|
|||||||
private boolean mDrawLegacyNavigationBarBackground;
|
private boolean mDrawLegacyNavigationBarBackground;
|
||||||
|
|
||||||
private final Rect mTempRect = new Rect();
|
private final Rect mTempRect = new Rect();
|
||||||
|
private final int[] mTempPos = new int[2];
|
||||||
|
|
||||||
Impl(@NonNull InputMethodService inputMethodService) {
|
Impl(@NonNull InputMethodService inputMethodService) {
|
||||||
mService = inputMethodService;
|
mService = inputMethodService;
|
||||||
@@ -259,21 +260,28 @@ final class NavigationBarController {
|
|||||||
switch (originalInsets.touchableInsets) {
|
switch (originalInsets.touchableInsets) {
|
||||||
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME:
|
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME:
|
||||||
if (inputFrame.getVisibility() == View.VISIBLE) {
|
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);
|
touchableRegion = new Region(mTempRect);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_CONTENT:
|
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_CONTENT:
|
||||||
if (inputFrame.getVisibility() == View.VISIBLE) {
|
if (inputFrame.getVisibility() == View.VISIBLE) {
|
||||||
inputFrame.getBoundsOnScreen(mTempRect);
|
inputFrame.getLocationInWindow(mTempPos);
|
||||||
mTempRect.top = originalInsets.contentTopInsets;
|
mTempRect.set(mTempPos[0], originalInsets.contentTopInsets,
|
||||||
|
mTempPos[0] + inputFrame.getWidth() ,
|
||||||
|
mTempPos[1] + inputFrame.getHeight());
|
||||||
touchableRegion = new Region(mTempRect);
|
touchableRegion = new Region(mTempRect);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_VISIBLE:
|
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_VISIBLE:
|
||||||
if (inputFrame.getVisibility() == View.VISIBLE) {
|
if (inputFrame.getVisibility() == View.VISIBLE) {
|
||||||
inputFrame.getBoundsOnScreen(mTempRect);
|
inputFrame.getLocationInWindow(mTempPos);
|
||||||
mTempRect.top = originalInsets.visibleTopInsets;
|
mTempRect.set(mTempPos[0], originalInsets.visibleTopInsets,
|
||||||
|
mTempPos[0] + inputFrame.getWidth(),
|
||||||
|
mTempPos[1] + inputFrame.getHeight());
|
||||||
touchableRegion = new Region(mTempRect);
|
touchableRegion = new Region(mTempRect);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user