diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayPolicy.java | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index d62bcdfd446b..1d3a318fdaa8 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1190,7 +1190,8 @@ public class DisplayPolicy { if (attrs.providesInsetsTypes != null) { for (@InternalInsetsType int insetsType : attrs.providesInsetsTypes) { final TriConsumer<DisplayFrames, WindowContainer, Rect> imeFrameProvider = - (displayFrames, windowContainer, inOutFrame) -> { + win.getAttrs().providedInternalImeInsets != null + ? (displayFrames, windowContainer, inOutFrame) -> { final Insets[] providedInternalImeInsets = win.getLayoutingAttrs(displayFrames.mRotation) .providedInternalImeInsets; @@ -1199,7 +1200,7 @@ public class DisplayPolicy { && providedInternalImeInsets[insetsType] != null) { inOutFrame.inset(providedInternalImeInsets[insetsType]); } - }; + } : null; switch (insetsType) { case ITYPE_STATUS_BAR: mStatusBarAlt = win; @@ -1218,17 +1219,18 @@ public class DisplayPolicy { mExtraNavBarAltPosition = getAltBarPosition(attrs); break; } - mDisplayContent.setInsetProvider(insetsType, win, (displayFrames, - windowContainer, inOutFrame) -> { - final Insets[] providedInternalInsets = win.getLayoutingAttrs( - displayFrames.mRotation).providedInternalInsets; - if (providedInternalInsets != null - && providedInternalInsets.length > insetsType - && providedInternalInsets[insetsType] != null) { - inOutFrame.inset(providedInternalInsets[insetsType]); - } - inOutFrame.inset(win.mGivenContentInsets); - }, imeFrameProvider); + mDisplayContent.setInsetProvider(insetsType, win, + win.getAttrs().providedInternalInsets != null ? (displayFrames, + windowContainer, inOutFrame) -> { + final Insets[] providedInternalInsets = win.getLayoutingAttrs( + displayFrames.mRotation).providedInternalInsets; + if (providedInternalInsets != null + && providedInternalInsets.length > insetsType + && providedInternalInsets[insetsType] != null) { + inOutFrame.inset(providedInternalInsets[insetsType]); + } + inOutFrame.inset(win.mGivenContentInsets); + } : null, imeFrameProvider); mInsetsSourceWindowsExceptIme.add(win); } } |