mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cancel long autopopup if focus leaves editor
This commit is contained in:
@@ -31,6 +31,8 @@ import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.actionSystem.TypedAction;
|
||||
import com.intellij.openapi.editor.event.*;
|
||||
import com.intellij.openapi.editor.ex.EditorEx;
|
||||
import com.intellij.openapi.editor.ex.FocusChangeListener;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerAdapter;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerListener;
|
||||
@@ -177,6 +179,19 @@ public abstract class CompletionPhase implements Disposable {
|
||||
}
|
||||
}
|
||||
}, this);
|
||||
if (indicator.isAutopopupCompletion()) {
|
||||
// lookup is not visible, we have to check ourselves if editor retains focus
|
||||
((EditorEx)indicator.getEditor()).addFocusListener(new FocusChangeListener() {
|
||||
@Override
|
||||
public void focusGained(Editor editor) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void focusLost(Editor editor) {
|
||||
indicator.closeAndFinish(true);
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.intellij.ide.CutProvider;
|
||||
import com.intellij.ide.DeleteProvider;
|
||||
import com.intellij.ide.PasteProvider;
|
||||
import com.intellij.ide.highlighter.HighlighterFactory;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.*;
|
||||
@@ -628,6 +629,11 @@ public class EditorWindow extends UserDataHolderBase implements EditorEx {
|
||||
myDelegate.addFocusListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFocusListener(@NotNull FocusChangeListener listener, Disposable parentDisposable) {
|
||||
myDelegate.addFocusListener(listener, parentDisposable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Project getProject() {
|
||||
return myDelegate.getProject();
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.ide.CopyProvider;
|
||||
import com.intellij.ide.CutProvider;
|
||||
import com.intellij.ide.DeleteProvider;
|
||||
import com.intellij.ide.PasteProvider;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
@@ -105,6 +106,8 @@ public interface EditorEx extends Editor {
|
||||
boolean setCaretEnabled(boolean enabled);
|
||||
|
||||
void addFocusListener(@NotNull FocusChangeListener listener);
|
||||
|
||||
void addFocusListener(@NotNull FocusChangeListener listener, Disposable parentDisposable);
|
||||
|
||||
void setOneLineMode(boolean b);
|
||||
|
||||
|
||||
@@ -4268,6 +4268,11 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
myFocusListeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFocusListener(@NotNull FocusChangeListener listener, Disposable parentDisposable) {
|
||||
ContainerUtil.add(listener, myFocusListeners, parentDisposable);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Project getProject() {
|
||||
|
||||
Reference in New Issue
Block a user