Merge "Check resolved override bounds for attaching IME to activity" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4e11c2445b
@@ -6456,14 +6456,15 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean matchParentBounds() {
|
public boolean matchParentBounds() {
|
||||||
if (super.matchParentBounds() && mCompatDisplayInsets == null) {
|
final Rect overrideBounds = getResolvedOverrideBounds();
|
||||||
|
if (overrideBounds.isEmpty()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// An activity in size compatibility mode may have resolved override bounds, so the exact
|
// An activity in size compatibility mode may have override bounds which equals to its
|
||||||
// bounds should also be checked. Otherwise IME window will show with offset. See
|
// parent bounds, so the exact bounds should also be checked to allow IME window to attach
|
||||||
// {@link DisplayContent#isImeAttachedToApp}.
|
// to the activity. See {@link DisplayContent#isImeAttachedToApp}.
|
||||||
final WindowContainer parent = getParent();
|
final WindowContainer parent = getParent();
|
||||||
return parent == null || parent.getBounds().equals(getResolvedOverrideBounds());
|
return parent == null || parent.getBounds().equals(overrideBounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -251,6 +251,13 @@ public class SizeCompatTests extends ActivityTestsBase {
|
|||||||
mActivity.mDisplayContent.mInputMethodTarget = addWindowToActivity(mActivity);
|
mActivity.mDisplayContent.mInputMethodTarget = addWindowToActivity(mActivity);
|
||||||
// Make sure IME cannot attach to the app, otherwise IME window will also be shifted.
|
// Make sure IME cannot attach to the app, otherwise IME window will also be shifted.
|
||||||
assertFalse(mActivity.mDisplayContent.isImeAttachedToApp());
|
assertFalse(mActivity.mDisplayContent.isImeAttachedToApp());
|
||||||
|
|
||||||
|
// Recompute the natural configuration without resolving size compat configuration.
|
||||||
|
mActivity.clearSizeCompatMode();
|
||||||
|
mActivity.onConfigurationChanged(mTask.getConfiguration());
|
||||||
|
// It should keep non-attachable because the resolved bounds will be computed according to
|
||||||
|
// the aspect ratio that won't match its parent bounds.
|
||||||
|
assertFalse(mActivity.mDisplayContent.isImeAttachedToApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user