diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java
index 71131eb0d627..ba51985b17c2 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java
@@ -22,6 +22,8 @@ import com.intellij.psi.PsiExpressionCodeFragment;
import com.intellij.testFramework.EditorTestUtil;
import com.intellij.testFramework.fixtures.EditorMouseFixture;
+import java.util.concurrent.TimeoutException;
+
public class CompletionHintsTest extends AbstractParameterInfoTestCase {
private boolean myStoredSettingValue;
@@ -1637,6 +1639,32 @@ public class CompletionHintsTest extends AbstractParameterInfoTestCase {
"int c, int d, int e");
}
+ public void testUndoRedoAfterOverloadSwitch() {
+ configureJava("class C { void some(int a) {} void some(int a, int b) {} void m() { s } }");
+ complete("some(int a)");
+ type('1');
+ showParameterInfo();
+ methodOverloadDown();
+ checkResultWithInlays("class C { void some(int a) {} void some(int a, int b) {} void m() { some(1, ); } }");
+ EditorTestUtil.testUndoInEditor(getEditor(), () -> {
+ myFixture.performEditorAction(IdeActions.ACTION_UNDO);
+ try {
+ waitForAllAsyncStuff();
+ }
+ catch (TimeoutException e) {
+ fail();
+ }
+ myFixture.performEditorAction(IdeActions.ACTION_REDO);
+ try {
+ waitForAllAsyncStuff();
+ }
+ catch (TimeoutException e) {
+ fail();
+ }
+ });
+ checkResultWithInlays("class C { void some(int a) {} void some(int a, int b) {} void m() { some(1, ); } }");
+ }
+
private void checkResultWithInlays(String text) {
myFixture.checkResultWithInlays(text);
}
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java b/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java
index 911134a33b0d..f9500e1cc6cd 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java
@@ -13,6 +13,7 @@ import com.intellij.lang.parameterInfo.*;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.command.undo.UndoManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.editor.event.*;
@@ -145,8 +146,11 @@ public class ParameterInfoController extends UserDataHolderBase implements Visib
myEditorCaretListener = new CaretListener(){
@Override
public void caretPositionChanged(@NotNull CaretEvent e) {
- syncUpdateOnCaretMove();
- rescheduleUpdate();
+ UndoManager undoManager = UndoManager.getInstance(myProject);
+ if (!undoManager.isUndoInProgress() && !undoManager.isRedoInProgress()) {
+ syncUpdateOnCaretMove();
+ rescheduleUpdate();
+ }
}
};
myEditor.getCaretModel().addCaretListener(myEditorCaretListener);