[platform] Only call progress indicator if it is determinate

#IJPL-163070 Fixed

GitOrigin-RevId: 50e0af96d10da33d39536a9467a7eed11932e435
This commit is contained in:
Bart van Helvert
2024-09-24 16:32:30 +02:00
committed by intellij-monorepo-bot
parent d56be64cee
commit aeb62393d2

View File

@@ -137,8 +137,9 @@ public class MoveFilesOrDirectoriesProcessor extends BaseRefactoringProcessor {
protected void performRefactoring(UsageInfo @NotNull [] _usages) {
try {
ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator();
progressIndicator.setIndeterminate(myElementsToMove.length <= 1); // only show progress when moving multiple elements
progressIndicator.setFraction(0.0);
boolean showProgression = myElementsToMove.length > 1;
progressIndicator.setIndeterminate(!showProgression); // only show progression when moving multiple elements
if (showProgression) progressIndicator.setFraction(0.0);
List<PsiElement> toChange = new ArrayList<>();
Collections.addAll(toChange, myElementsToMove);
@@ -177,7 +178,7 @@ public class MoveFilesOrDirectoriesProcessor extends BaseRefactoringProcessor {
List<SmartPsiElementPointer<PsiFile>> movedFiles = new ArrayList<>();
for (int i = 0; i < myElementsToMove.length; i++) {
PsiElement element = toChange.get(i);
progressIndicator.setFraction((double)i / myElementsToMove.length);
if (showProgression) progressIndicator.setFraction((double)i / myElementsToMove.length);
if (element instanceof PsiDirectory directory) {
progressIndicator.setText2(directory.getVirtualFile().getPresentableUrl());
MoveFilesOrDirectoriesUtil.doMoveDirectory(directory, newParent);
@@ -211,7 +212,7 @@ public class MoveFilesOrDirectoriesProcessor extends BaseRefactoringProcessor {
}
}
progressIndicator.setText2("");
progressIndicator.setFraction(1.0);
if (showProgression) progressIndicator.setFraction(1.0);
// sort by offset descending to process correctly several usages in one PsiElement [IDEADEV-33013]
UsageInfo[] usages = codeUsages.toArray(UsageInfo.EMPTY_ARRAY);
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages);