summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/InsetsState.java4
-rw-r--r--core/java/android/view/WindowInsets.java50
2 files changed, 48 insertions, 6 deletions
diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java
index c5154662928e..9896aa4fe214 100644
--- a/core/java/android/view/InsetsState.java
+++ b/core/java/android/view/InsetsState.java
@@ -172,6 +172,10 @@ public class InsetsState implements Parcelable {
for (int type = FIRST_TYPE; type <= LAST_TYPE; type++) {
InsetsSource source = mSources.get(type);
if (source == null) {
+ int index = indexOf(toPublicType(type));
+ if (typeInsetsMap[index] == null) {
+ typeInsetsMap[index] = Insets.NONE;
+ }
continue;
}
diff --git a/core/java/android/view/WindowInsets.java b/core/java/android/view/WindowInsets.java
index 9b2a6cbce48f..33a45f170164 100644
--- a/core/java/android/view/WindowInsets.java
+++ b/core/java/android/view/WindowInsets.java
@@ -835,12 +835,24 @@ public final class WindowInsets {
@Override
public String toString() {
- return "WindowInsets{systemWindowInsets=" + getSystemWindowInsets()
- + " stableInsets=" + getStableInsets()
- + " sysGestureInsets=" + getSystemGestureInsets()
- + (mDisplayCutout != null ? " cutout=" + mDisplayCutout : "")
- + (isRound() ? " round" : "")
- + "}";
+ StringBuilder result = new StringBuilder("WindowInsets{\n ");
+ for (int i = 0; i < SIZE; i++) {
+ Insets insets = mTypeInsetsMap[i];
+ Insets maxInsets = mTypeMaxInsetsMap[i];
+ boolean visible = mTypeVisibilityMap[i];
+ if (!Insets.NONE.equals(insets) || !Insets.NONE.equals(maxInsets) || visible) {
+ result.append(Type.toString(1 << i)).append("=").append(insets)
+ .append(" max=").append(maxInsets)
+ .append(" vis=").append(visible)
+ .append("\n ");
+ }
+ }
+
+ result.append(mDisplayCutout != null ? "cutout=" + mDisplayCutout : "");
+ result.append("\n ");
+ result.append(isRound() ? "round" : "");
+ result.append("}");
+ return result.toString();
}
/**
@@ -1309,6 +1321,32 @@ public final class WindowInsets {
}
}
+ static String toString(@InsetsType int type) {
+ switch (type) {
+ case STATUS_BARS:
+ return "statusBars";
+ case NAVIGATION_BARS:
+ return "navigationBars";
+ case CAPTION_BAR:
+ return "captionBar";
+ case IME:
+ return "ime";
+ case SYSTEM_GESTURES:
+ return "systemGestures";
+ case MANDATORY_SYSTEM_GESTURES:
+ return "mandatorySystemGestures";
+ case TAPPABLE_ELEMENT:
+ return "tappableElement";
+ case DISPLAY_CUTOUT:
+ return "displayCutout";
+ case WINDOW_DECOR:
+ return "windowDecor";
+ default:
+ throw new IllegalArgumentException("type needs to be >= FIRST and <= LAST,"
+ + " type=" + type);
+ }
+ }
+
private Type() {
}