From 0c4d5d0e609d99009f5ad367f87a012e48cec000 Mon Sep 17 00:00:00 2001 From: chagaiB Date: Wed, 17 Sep 2025 03:24:15 +0300 Subject: [PATCH] Prevent SwipeRefreshLayout from intercepting while list can still scroll up This PR fixes an issue where pull-to-refresh could trigger while the files list was not at the top, causing an unexpected refresh and interrupting scrolling. Implementation: - Set a ChildScrollUpCallback on SwipeRefreshLayout to return true when the RecyclerView can still scroll up (canScrollVertically(-1) == true). This prevents SwipeRefreshLayout from intercepting gestures mid-list. Signed-off-by: chagaiB --- .../owncloud/android/ui/fragment/OCFileListFragment.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 8961b2fdbbcf..f8134547a640 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -280,6 +280,12 @@ public void onResume() { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + // Ensure pull-to-refresh only triggers when the list is truly at top + swipeRefreshLayout.setOnChildScrollUpCallback((parent, child) ->{ + // If the RecyclerView can scroll up, don't allow SwipeRefreshLayout to intercept (no refresh) + return recyclerView != null && recyclerView.canScrollVertically(-1); + }); + setupBackButtonRedirectToAllFiles(); }