From 156b2fe1f0ad2db5b33b66702abf25ceaff803dd Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Sat, 4 Jan 2025 17:51:15 -0700 Subject: [PATCH] list: fix fast scroller haptics --- .../list/recycler/FastScrollRecyclerView.kt | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt b/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt index a14a39e6b..ce1bbcee9 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/recycler/FastScrollRecyclerView.kt @@ -32,7 +32,6 @@ import android.view.View import android.view.ViewConfiguration import android.view.ViewGroup import android.view.WindowInsets -import android.view.accessibility.AccessibilityEvent import android.widget.FrameLayout import androidx.annotation.AttrRes import androidx.core.view.isInvisible @@ -53,7 +52,6 @@ import org.oxycblt.auxio.util.inflater import org.oxycblt.auxio.util.isRtl import org.oxycblt.auxio.util.isUnder import org.oxycblt.auxio.util.systemBarInsetsCompat -import timber.log.Timber /** * A [RecyclerView] that enables better fast-scrolling. This is fundamentally a implementation of @@ -263,13 +261,6 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr val popupLayoutParams = popupView.layoutParams as FrameLayout.LayoutParams if (popupView.text != popupText) { - performHapticFeedback( - if (Build.VERSION.SDK_INT >= 27) { - HapticFeedbackConstants.TEXT_HANDLE_MOVE - } else { - HapticFeedbackConstants.KEYBOARD_TAP - } - ) popupView.text = popupText val widthMeasureSpec = @@ -292,6 +283,9 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr popupLayoutParams.height) popupView.measure(widthMeasureSpec, heightMeasureSpec) + if (showingPopup) { + doPopupVibration() + } } val popupWidth = popupView.measuredWidth @@ -484,6 +478,16 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr popupAnimator = popupSlider.slideOut(popupView).also { it.start() } } + private fun doPopupVibration() { + performHapticFeedback( + if (Build.VERSION.SDK_INT >= 27) { + HapticFeedbackConstants.TEXT_HANDLE_MOVE + } else { + HapticFeedbackConstants.KEYBOARD_TAP + } + ) + } + // --- LAYOUT STATE --- private val thumbOffsetRange: Int