From c06b9e09e03f11d73e694e8fade6c8605d56fcac Mon Sep 17 00:00:00 2001
From: M66B <M66B@users.noreply.github.com>
Date: Sun, 27 Oct 2024 18:04:48 +0100
Subject: [PATCH] Inset undo snackbar

---
 app/src/main/java/eu/faircode/email/ActivityBase.java | 11 ++++++++++-
 app/src/main/java/eu/faircode/email/ActivityView.java |  2 ++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java
index 8bd4277734..899da8720c 100644
--- a/app/src/main/java/eu/faircode/email/ActivityBase.java
+++ b/app/src/main/java/eu/faircode/email/ActivityBase.java
@@ -71,6 +71,7 @@ import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.PreferenceManager;
 
 import com.google.android.material.appbar.AppBarLayout;
+import com.google.android.material.snackbar.Snackbar;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -214,10 +215,18 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
                     if (cf != null) {
                         Insets nav = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars());
                         int pad = Math.max(0, cfpb + (nav.bottom - nav.top));
+                        Snackbar.SnackbarLayout sl = Helper.findSnackbarLayout(cf.getRootView());
+                        if (sl != null) {
+                            pad = cfpb;
+                            if (sl.getPaddingBottom() != nav.bottom - nav.top)
+                                sl.setPaddingRelative(
+                                        sl.getPaddingStart(), sl.getPaddingTop(),
+                                        sl.getPaddingEnd(), nav.bottom - nav.top);
+                        }
                         if (pad != cf.getPaddingBottom())
                             cf.setPaddingRelative(
                                     cf.getPaddingStart(), cf.getPaddingTop(),
-                                    cf.getPaddingEnd(), cfpb + (nav.bottom - nav.top));
+                                    cf.getPaddingEnd(), pad);
                     }
                     //for (View child : Helper.getViewsWithTag(v, "inset")) {
                     //    mlp = (ViewGroup.MarginLayoutParams) child.getLayoutParams();
diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java
index 9fc7edd394..28709b1814 100644
--- a/app/src/main/java/eu/faircode/email/ActivityView.java
+++ b/app/src/main/java/eu/faircode/email/ActivityView.java
@@ -1577,6 +1577,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
                 ViewGroup.MarginLayoutParams lparam = (ViewGroup.MarginLayoutParams) content.getLayoutParams();
                 lparam.bottomMargin = snackbar.getView().getHeight();
                 content.setLayoutParams(lparam);
+                content.requestApplyInsets();
             }
 
             @Override
@@ -1584,6 +1585,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
                 ViewGroup.MarginLayoutParams lparam = (ViewGroup.MarginLayoutParams) content.getLayoutParams();
                 lparam.bottomMargin = 0;
                 content.setLayoutParams(lparam);
+                content.requestApplyInsets();
             }
         });