From a5355867d218b25501881639aebac1cf92eee1e6 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Wed, 6 Mar 2019 17:19:21 +0100 Subject: [PATCH] WindowInsets: Properly initialize systemGestureInsets Fixes: 127474513 Test: atest WindowInsetsTest Change-Id: I57cc731d5e0e83651fbb18ed5a1e9f5222c52062 --- core/java/android/view/InsetsState.java | 4 ++++ core/java/android/view/WindowInsets.java | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java index 1382fbc25b9c2..2d7e17961279b 100644 --- a/core/java/android/view/InsetsState.java +++ b/core/java/android/view/InsetsState.java @@ -142,6 +142,10 @@ public class InsetsState implements Parcelable { && legacyContentInsets != null && legacyStableInsets != null) { WindowInsets.assignCompatInsets(typeInsetsMap, legacyContentInsets); WindowInsets.assignCompatInsets(typeMaxInsetsMap, legacyStableInsets); + + // TODO: set system gesture insets based on actual system gesture area. + typeInsetsMap[Type.indexOf(Type.systemGestures())] = Insets.of(legacyContentInsets); + typeMaxInsetsMap[Type.indexOf(Type.systemGestures())] = Insets.of(legacyContentInsets); } for (int type = FIRST_TYPE; type <= LAST_TYPE; type++) { InsetsSource source = mSources.get(type); diff --git a/core/java/android/view/WindowInsets.java b/core/java/android/view/WindowInsets.java index f3bbca3500c7a..f1a992cb45fac 100644 --- a/core/java/android/view/WindowInsets.java +++ b/core/java/android/view/WindowInsets.java @@ -27,6 +27,7 @@ import static android.view.WindowInsets.Type.TOP_BAR; import static android.view.WindowInsets.Type.all; import static android.view.WindowInsets.Type.compatSystemInsets; import static android.view.WindowInsets.Type.indexOf; +import static android.view.WindowInsets.Type.systemGestures; import android.annotation.IntDef; import android.annotation.IntRange; @@ -220,6 +221,8 @@ public final class WindowInsets { } Insets[] typeInsetMap = new Insets[SIZE]; assignCompatInsets(typeInsetMap, insets); + // TODO: set system gesture insets based on actual system gesture area. + typeInsetMap[indexOf(systemGestures())] = Insets.of(insets); return typeInsetMap; } @@ -229,7 +232,6 @@ public final class WindowInsets { static void assignCompatInsets(Insets[] typeInsetMap, Rect insets) { typeInsetMap[indexOf(TOP_BAR)] = Insets.of(0, insets.top, 0, 0); typeInsetMap[indexOf(SIDE_BARS)] = Insets.of(insets.left, 0, insets.right, insets.bottom); - typeInsetMap[indexOf(SYSTEM_GESTURES)] = Insets.of(insets); } private static boolean[] createCompatVisibilityMap(@Nullable Insets[] typeInsetMap) { @@ -675,6 +677,7 @@ public final class WindowInsets { public String toString() { return "WindowInsets{systemWindowInsets=" + getSystemWindowInsets() + " stableInsets=" + getStableInsets() + + " sysGestureInsets=" + getSystemGestureInsets() + (mDisplayCutout != null ? " cutout=" + mDisplayCutout : "") + (isRound() ? " round" : "") + "}";