mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-220956 Error tooltip shown on F2 stays longer than it should, and obscures editor contents
GitOrigin-RevId: 9fc0f9a54cbac745ec47af99b82841c72a02a0a9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
12be1157ac
commit
c2737face2
+35
-9
@@ -8,13 +8,17 @@ import com.intellij.codeInsight.daemon.impl.tooltips.TooltipActionProvider;
|
||||
import com.intellij.codeInsight.documentation.DocumentationComponent;
|
||||
import com.intellij.codeInsight.documentation.DocumentationManager;
|
||||
import com.intellij.codeInsight.documentation.QuickDocUtil;
|
||||
import com.intellij.codeInsight.hint.HintManagerImpl;
|
||||
import com.intellij.codeInsight.hint.LineTooltipRenderer;
|
||||
import com.intellij.codeInsight.hint.TooltipGroup;
|
||||
import com.intellij.codeInsight.hint.TooltipRenderer;
|
||||
import com.intellij.ui.WidthBasedLayout;
|
||||
import com.intellij.codeInsight.lookup.LookupManager;
|
||||
import com.intellij.ide.IdeEventQueue;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.ex.AnActionListener;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.components.Service;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
@@ -77,7 +81,7 @@ public final class EditorMouseHoverPopupManager implements Disposable {
|
||||
private boolean mySkipNextMovement;
|
||||
|
||||
public EditorMouseHoverPopupManager() {
|
||||
myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication());
|
||||
myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, this);
|
||||
EditorEventMulticaster multicaster = EditorFactory.getInstance().getEventMulticaster();
|
||||
multicaster.addCaretListener(new CaretListener() {
|
||||
@Override
|
||||
@@ -95,7 +99,7 @@ public final class EditorMouseHoverPopupManager implements Disposable {
|
||||
return;
|
||||
}
|
||||
|
||||
cancelCurrentProcessing();
|
||||
cancelProcessingAndCloseHint();
|
||||
}, this);
|
||||
|
||||
EditorMouseHoverPopupControl.getInstance().addListener(() -> {
|
||||
@@ -109,13 +113,12 @@ public final class EditorMouseHoverPopupManager implements Disposable {
|
||||
}
|
||||
});
|
||||
|
||||
IdeEventQueue.getInstance().addActivityListener(this::onActivity, ApplicationManager.getApplication());
|
||||
IdeEventQueue.getInstance().addActivityListener(this::onActivity, this);
|
||||
ApplicationManager.getApplication().getMessageBus().connect(this).subscribe(AnActionListener.TOPIC, new MyActionListener());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
}
|
||||
public void dispose() {}
|
||||
|
||||
private void handleMouseMoved(@NotNull EditorMouseEvent e) {
|
||||
cancelCurrentProcessing();
|
||||
@@ -320,6 +323,11 @@ public final class EditorMouseHoverPopupManager implements Disposable {
|
||||
return info == null && elementForQuickDoc == null ? null : new Context(offset, info, elementForQuickDoc);
|
||||
}
|
||||
|
||||
private void cancelProcessingAndCloseHint() {
|
||||
cancelCurrentProcessing();
|
||||
closeHint();
|
||||
}
|
||||
|
||||
private void closeHint() {
|
||||
AbstractPopup hint = getCurrentHint();
|
||||
if (hint != null) {
|
||||
@@ -356,8 +364,7 @@ public final class EditorMouseHoverPopupManager implements Disposable {
|
||||
int offset,
|
||||
boolean requestFocus,
|
||||
boolean showImmediately) {
|
||||
cancelCurrentProcessing();
|
||||
closeHint();
|
||||
cancelProcessingAndCloseHint();
|
||||
Context context = new Context(offset, info, null) {
|
||||
@Override
|
||||
long getShowingDelay() {
|
||||
@@ -782,4 +789,23 @@ public final class EditorMouseHoverPopupManager implements Disposable {
|
||||
getInstance().cancelCurrentProcessing();
|
||||
}
|
||||
}
|
||||
|
||||
private static class MyActionListener implements AnActionListener {
|
||||
@Override
|
||||
public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) {
|
||||
if (!Registry.is("editor.new.mouse.hover.popups")) {
|
||||
return;
|
||||
}
|
||||
if (action instanceof HintManagerImpl.ActionToIgnore) return;
|
||||
getInstance().cancelProcessingAndCloseHint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeEditorTyping(char c, @NotNull DataContext dataContext) {
|
||||
if (!Registry.is("editor.new.mouse.hover.popups")) {
|
||||
return;
|
||||
}
|
||||
getInstance().cancelProcessingAndCloseHint();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user