diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index d91dcf0dc326..f6e3670b06e6 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -2375,8 +2375,20 @@ class FileDisplayActivity : } val file = storageManager.getFileById(renamedFile.parentId) - if (file != null && file == getCurrentDir()) { - fileListFragment?.adapter?.updateFile(renamedFile) + val isCurrentDirParentDirOfGivenFile = (file != null && file == currentDir) + + // checking current dir against renamed file's parent will always fail when user is in Shared/Favorites root. + // thus check is current dir is root or not as well + if (currentDir?.isRootDirectory == true || isCurrentDirParentDirOfGivenFile) { + val fragment = fileListFragment + + // OCFileSearchTask may still run during rename, so use a single refresh path to avoid + // flicker/inconsistent filenames. + if (fragment?.isSearchFragment == true) { + fragment.cancelAndRetriggerSearch() + } else { + fragment?.adapter?.updateFile(renamedFile) + } } refreshGalleryFragmentIfNeeded() 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 45fb1fff7c46..b82b2c09ed12 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 @@ -2122,6 +2122,16 @@ public boolean isSearchFragment() { return searchFragment; } + public void cancelAndRetriggerSearch() { + if (searchTask != null) { + searchTask.cancel(); + searchTask = null; + } + if (searchEvent != null) { + handleSearchEvent(searchEvent); + } + } + /** * De-/select all elements in the current list view. *