diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java b/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java index 5f2877a637597..65a5263e73f49 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java @@ -18,6 +18,7 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.impl.PushedFilePropertiesUpdater; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.NlsSafe; @@ -551,6 +552,13 @@ else if (element instanceof PsiClassOwner) { DumbService.getInstance(myProject).completeJustSubmittedTasks(); + // Invalidate file properties to ensure FileIndex is updated for the new source root. + // Accept all files to ensure the moved file's properties are fully refreshed. + VirtualFile movedFile = newElement.getVirtualFile(); + if (movedFile != null) { + PushedFilePropertiesUpdater.getInstance(myProject).filePropertiesChanged(movedFile, __ -> true); + } + final PsiPackage newPackage = JavaDirectoryService.getInstance().getPackage(directory); if (newPackage != null) { String qualifiedName = newPackage.getQualifiedName(); diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java b/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java index 2a3298f00ac77..3378a63a62975 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java @@ -7,6 +7,7 @@ import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.PackageIndex; +import com.intellij.openapi.roots.impl.PushedFilePropertiesUpdater; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VfsUtilCore; @@ -237,6 +238,14 @@ public static PsiClass doMoveClass(PsiClass aClass, PsiDirectory moveDestination file = moveDestination.findFile(file.getName()); + // Invalidate file properties to ensure FileIndex is updated for the new source root. + // Accept all files to ensure the moved file's properties are fully refreshed. + if (file != null) { + VirtualFile movedFile = file.getVirtualFile(); + if (movedFile != null) { + PushedFilePropertiesUpdater.getInstance(project).filePropertiesChanged(movedFile, __ -> true); + } + } } if (newPackage != null && file instanceof PsiClassOwner && !FileTypeUtils.isInServerPageFile(file) &&