From dfcc14963d979150cc9c5813c9f58b147e085d44 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 4 Oct 2022 14:37:51 -0300 Subject: [PATCH] Fix issue with insets on API < 30. --- .../securesms/util/SystemWindowInsetsSetter.kt | 10 ++++++++-- .../java/org/thoughtcrime/securesms/util/ViewUtil.java | 5 +++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SystemWindowInsetsSetter.kt b/app/src/main/java/org/thoughtcrime/securesms/util/SystemWindowInsetsSetter.kt index 68da241e77..1d0df27b30 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SystemWindowInsetsSetter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SystemWindowInsetsSetter.kt @@ -1,6 +1,8 @@ package org.thoughtcrime.securesms.util +import android.os.Build import android.view.View +import androidx.core.graphics.Insets import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.DefaultLifecycleObserver @@ -13,9 +15,9 @@ object SystemWindowInsetsSetter { */ fun attach(view: View, lifecycleOwner: LifecycleOwner, @WindowInsetsCompat.Type.InsetsType insetType: Int = WindowInsetsCompat.Type.systemBars()) { val listener = view.doOnEachLayout { - val insets = ViewCompat.getRootWindowInsets(view)?.getInsets(insetType) + val insets: Insets? = ViewCompat.getRootWindowInsets(view)?.getInsets(insetType) - if (insets != null) { + if (Build.VERSION.SDK_INT > 29 && insets != null && !insets.isEmpty()) { view.setPadding( insets.left, insets.top, @@ -40,4 +42,8 @@ object SystemWindowInsetsSetter { lifecycleOwner.lifecycle.addObserver(lifecycleObserver) } + + private fun Insets.isEmpty(): Boolean { + return (top + bottom + right + left) == 0 + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java index b64f6674d9..8c98383d99 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java @@ -20,6 +20,7 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.res.Resources; +import android.os.Build; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; @@ -329,7 +330,7 @@ public final class ViewUtil { public static int getStatusBarHeight(@NonNull View view) { final WindowInsetsCompat rootWindowInsets = ViewCompat.getRootWindowInsets(view); - if (rootWindowInsets != null) { + if (Build.VERSION.SDK_INT > 29 && rootWindowInsets != null) { return rootWindowInsets.getInsets(WindowInsetsCompat.Type.statusBars()).top; } else { int result = 0; @@ -343,7 +344,7 @@ public final class ViewUtil { public static int getNavigationBarHeight(@NonNull View view) { final WindowInsetsCompat rootWindowInsets = ViewCompat.getRootWindowInsets(view); - if (rootWindowInsets != null) { + if (Build.VERSION.SDK_INT > 29 && rootWindowInsets != null) { return rootWindowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom; } else { int result = 0;