From 5d7a84da9567d487dec2b542bbf5b91a538283bf Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 12 Aug 2026 13:13:38 -0400 Subject: [PATCH] Prevent canceled hide animation from hiding quick attachment buttons. --- .../securesms/components/HidingLinearLayout.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/HidingLinearLayout.java b/app/src/main/java/org/thoughtcrime/securesms/components/HidingLinearLayout.java index 79b10b5ff7..8320ae39b9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/HidingLinearLayout.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/HidingLinearLayout.java @@ -12,6 +12,9 @@ import androidx.interpolator.view.animation.FastOutSlowInInterpolator; public class HidingLinearLayout extends LinearLayout { + /** Tracks whether the most recent request was to hide, so that a canceled hide animation cannot later apply {@link #GONE}. */ + private boolean hiding; + public HidingLinearLayout(Context context) { super(context); } @@ -27,6 +30,8 @@ public class HidingLinearLayout extends LinearLayout { public void hide(boolean shouldAnimate) { if (!isEnabled() || getVisibility() == GONE) return; + hiding = true; + if (!shouldAnimate) { setVisibility(GONE); return; @@ -48,7 +53,9 @@ public class HidingLinearLayout extends LinearLayout { @Override public void onAnimationEnd(Animation animation) { - setVisibility(GONE); + if (hiding) { + setVisibility(GONE); + } } }); @@ -58,7 +65,9 @@ public class HidingLinearLayout extends LinearLayout { public void show() { if (!isEnabled()) return; + hiding = false; clearAnimation(); + if (getVisibility() == VISIBLE) return; setVisibility(VISIBLE); @@ -78,6 +87,7 @@ public class HidingLinearLayout extends LinearLayout { } public void disable() { + hiding = true; setVisibility(GONE); setEnabled(false); }