mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-204308 Multiline TODO popup interferes with editing the TODO
redo the fix - bring back popup when hovering over scrollbar GitOrigin-RevId: e622939ab06688230cc0db16d52bd93d940cfc01
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d048fdfe62
commit
cfe69a2dc4
+8
-3
@@ -27,6 +27,7 @@ import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.IndexNotReadyException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.problems.Problem;
|
||||
import com.intellij.problems.WolfTheProblemSolver;
|
||||
@@ -42,6 +43,7 @@ import com.intellij.util.concurrency.EdtExecutorService;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import com.intellij.util.containers.Stack;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -486,14 +488,16 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP
|
||||
range -> joiner.add(text.subSequence(range.getStartOffset(), range.getEndOffset()))
|
||||
);
|
||||
String description = joiner.toString();
|
||||
String tooltip = XmlStringUtil.escapeString(StringUtil.shortenPathWithEllipsis(description, 1024)).replace("\n", "<br>");
|
||||
|
||||
TextAttributes attributes = todoItem.getPattern().getAttributes().getTextAttributes();
|
||||
addTodoItem(startOffset, endOffset, priorityRange, insideResult, outsideResult, attributes, description, textRange);
|
||||
addTodoItem(startOffset, endOffset, priorityRange, insideResult, outsideResult, attributes, description, tooltip, textRange);
|
||||
if (!additionalRanges.isEmpty()) {
|
||||
TextAttributes attributesForAdditionalLines = attributes.clone();
|
||||
attributesForAdditionalLines.setErrorStripeColor(null);
|
||||
for (TextRange range: additionalRanges) {
|
||||
addTodoItem(startOffset, endOffset, priorityRange, insideResult, outsideResult, attributesForAdditionalLines, description, range);
|
||||
addTodoItem(startOffset, endOffset, priorityRange, insideResult, outsideResult, attributesForAdditionalLines, description,
|
||||
tooltip, range);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -505,12 +509,13 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP
|
||||
@NotNull Collection<? super HighlightInfo> insideResult,
|
||||
@NotNull Collection<? super HighlightInfo> outsideResult,
|
||||
@NotNull TextAttributes attributes,
|
||||
@NotNull String description, @NotNull TextRange range) {
|
||||
@NotNull String description, @NotNull String tooltip, @NotNull TextRange range) {
|
||||
if (range.getStartOffset() >= restrictEndOffset || range.getEndOffset() <= restrictStartOffset) return;
|
||||
HighlightInfo info = HighlightInfo.newHighlightInfo(HighlightInfoType.TODO)
|
||||
.range(range)
|
||||
.textAttributes(attributes)
|
||||
.description(description)
|
||||
.escapedToolTip(tooltip)
|
||||
.createUnconditionally();
|
||||
Collection<? super HighlightInfo> result = priorityRange.containsRange(info.getStartOffset(), info.getEndOffset()) ? insideResult : outsideResult;
|
||||
result.add(info);
|
||||
|
||||
+1
-1
@@ -643,7 +643,7 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx implements Pers
|
||||
final List<HighlightInfo> foundInfoList = new SmartList<>();
|
||||
processHighlightsNearOffset(document, myProject, minSeverity, offset, includeFixRange,
|
||||
info -> {
|
||||
if (info.getSeverity() == HighlightInfoType.ELEMENT_UNDER_CARET_SEVERITY) {
|
||||
if (info.getSeverity() == HighlightInfoType.ELEMENT_UNDER_CARET_SEVERITY || info.type == HighlightInfoType.TODO) {
|
||||
return true;
|
||||
}
|
||||
if (!foundInfoList.isEmpty()) {
|
||||
|
||||
+8
-4
@@ -4,6 +4,7 @@ package com.intellij.openapi.editor.impl;
|
||||
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzerSettings;
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfoType;
|
||||
import com.intellij.codeInsight.hint.*;
|
||||
import com.intellij.ide.IdeEventQueue;
|
||||
import com.intellij.ide.ui.UISettings;
|
||||
@@ -292,10 +293,13 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark
|
||||
final int startOffset = getOffset(fitLineToEditor(visualLine - myPreviewLines), true);
|
||||
final int endOffset = getOffset(fitLineToEditor(visualLine + myPreviewLines), false);
|
||||
markupModel.processRangeHighlightersOverlappingWith(startOffset, endOffset, highlighter -> {
|
||||
if (highlighter.getErrorStripeMarkColor() != null) {
|
||||
if (highlighter.getStartOffset() < endOffset && highlighter.getEndOffset() > startOffset) {
|
||||
highlighters.add(highlighter);
|
||||
}
|
||||
Object tooltip = highlighter.getErrorStripeTooltip();
|
||||
if (tooltip != null &&
|
||||
!(tooltip instanceof HighlightInfo && ((HighlightInfo)tooltip).type == HighlightInfoType.TODO) &&
|
||||
highlighter.getErrorStripeMarkColor() != null &&
|
||||
highlighter.getStartOffset() < endOffset &&
|
||||
highlighter.getEndOffset() > startOffset) {
|
||||
highlighters.add(highlighter);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user