From 6678fdcbe9c8aef916a6804a014a126484a00e43 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 27 Sep 2024 12:04:01 -0300 Subject: [PATCH] Fix bad sheet behavior when returning from system pip. --- .../controls/ControlsAndInfoController.kt | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt index f8910ef955..c499cf281f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt @@ -5,6 +5,7 @@ package org.thoughtcrime.securesms.components.webrtc.controls +import android.annotation.SuppressLint import android.content.res.ColorStateList import android.content.res.Configuration import android.graphics.Color @@ -201,22 +202,35 @@ class ControlsAndInfoController private constructor( BottomSheetBehaviorHack.setNestedScrollingChild(behavior, callInfoComposeView) behavior.addBottomSheetCallback(object : BottomSheetCallback() { + @SuppressLint("SwitchIntDef") override fun onStateChanged(bottomSheet: View, newState: Int) { overflowPopupWindow.dismiss() - if (newState == BottomSheetBehavior.STATE_COLLAPSED) { - controlsAndInfoViewModel.resetScrollState() - if (controlState.isFadeOutEnabled) { - hide(delay = HIDE_CONTROL_DELAY) + when (newState) { + BottomSheetBehavior.STATE_COLLAPSED -> { + controlsAndInfoViewModel.resetScrollState() + if (controlState.isFadeOutEnabled) { + hide(delay = HIDE_CONTROL_DELAY) + } + updateCallSheetVisibilities(0f) + } + BottomSheetBehavior.STATE_EXPANDED -> { + cancelScheduledHide() + updateCallSheetVisibilities(1f) + } + BottomSheetBehavior.STATE_DRAGGING -> { + cancelScheduledHide() + } + BottomSheetBehavior.STATE_HIDDEN -> { + controlsAndInfoViewModel.resetScrollState() + updateCallSheetVisibilities(-1f) } - } else if (newState == BottomSheetBehavior.STATE_EXPANDED || newState == BottomSheetBehavior.STATE_DRAGGING) { - cancelScheduledHide() - } else if (newState == BottomSheetBehavior.STATE_HIDDEN) { - controlsAndInfoViewModel.resetScrollState() } } override fun onSlide(bottomSheet: View, slideOffset: Float) { - updateCallSheetVisibilities(slideOffset) + if (slideOffset <= 1 || slideOffset >= -1) { + updateCallSheetVisibilities(slideOffset) + } } })