From e4519c03a7399c3c43f7496eec0d70288fcc3d58 Mon Sep 17 00:00:00 2001 From: Ruben Sousa Date: Wed, 9 Oct 2024 00:48:37 +0200 Subject: [PATCH] Fix searching during animations case --- .../dpadrecyclerview/layoutmanager/LayoutConfiguration.kt | 3 ++- .../dpadrecyclerview/layoutmanager/focus/FocusDispatcher.kt | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/LayoutConfiguration.kt b/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/LayoutConfiguration.kt index 8d5f203a..4db14e4a 100644 --- a/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/LayoutConfiguration.kt +++ b/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/LayoutConfiguration.kt @@ -90,7 +90,8 @@ internal class LayoutConfiguration(properties: Properties) { var isFocusSearchDisabled = false private set - private var isFocusSearchEnabledDuringAnimations = false + var isFocusSearchEnabledDuringAnimations = false + private set // Number of items to prefetch when first coming on screen with new data var initialPrefetchItemCount = 4 diff --git a/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/focus/FocusDispatcher.kt b/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/focus/FocusDispatcher.kt index 371308bb..f91cf316 100644 --- a/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/focus/FocusDispatcher.kt +++ b/dpadrecyclerview/src/main/java/com/rubensousa/dpadrecyclerview/layoutmanager/focus/FocusDispatcher.kt @@ -136,6 +136,12 @@ internal class FocusDispatcher( return currentRecyclerView.parent?.focusSearch(focused, direction) } + if (!configuration.isFocusSearchEnabledDuringAnimations + && currentRecyclerView.isAnimating + ) { + return focused + } + // Get the new focus direction and exit early if none is valid val focusDirection: FocusDirection = FocusDirection.from( direction = direction,