diff --git a/json/src/com/intellij/json/breadcrumbs/JsonBreadcrumbsProvider.java b/json/src/com/intellij/json/breadcrumbs/JsonBreadcrumbsProvider.java index 2cf3d25804a4..ec5e9ac6b665 100644 --- a/json/src/com/intellij/json/breadcrumbs/JsonBreadcrumbsProvider.java +++ b/json/src/com/intellij/json/breadcrumbs/JsonBreadcrumbsProvider.java @@ -55,11 +55,6 @@ public class JsonBreadcrumbsProvider implements BreadcrumbsProvider { return JsonSchemaDocumentationProvider.findSchemaAndGenerateDoc(e, null, true); } - @Override - public boolean isDeferredTooltipEvaluation() { - return true; - } - @NotNull @Override public List getContextActions(@NotNull PsiElement element) { diff --git a/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsProvider.java b/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsProvider.java index 8c177d69393e..c3c618cdb221 100644 --- a/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsProvider.java +++ b/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsProvider.java @@ -55,13 +55,6 @@ public interface BreadcrumbsProvider { return null; } - /** - * @return should return true in case when tooltip evaluation is slow - */ - default boolean isDeferredTooltipEvaluation() { - return false; - } - /** * @param element that represents a single crumb * @return an element that represents a parent crumb, or {@code null} diff --git a/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Crumb.java b/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Crumb.java index aff6939c2d79..46123e9ed0f5 100644 --- a/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Crumb.java +++ b/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Crumb.java @@ -39,7 +39,7 @@ public interface Crumb { public Impl(@NotNull BreadcrumbsProvider provider, @NotNull PsiElement element) { this(provider.getElementIcon(element), provider.getElementInfo(element), - provider.isDeferredTooltipEvaluation() ? null : provider.getElementTooltip(element), + provider.getElementTooltip(element), provider.getContextActions(element)); } diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/PsiCrumb.java b/xml/impl/src/com/intellij/xml/breadcrumbs/PsiCrumb.java index 8f8d4384fdb0..843b6089137d 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/PsiCrumb.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/PsiCrumb.java @@ -7,31 +7,29 @@ import com.intellij.ui.breadcrumbs.BreadcrumbsProvider; import com.intellij.ui.components.breadcrumbs.Crumb; import org.jetbrains.annotations.Nullable; -import java.util.function.Function; - /** * @author Sergey.Malenkov */ final class PsiCrumb extends Crumb.Impl { private final PsiAnchor anchor; - private final Function tooltipEvaluator; + private BreadcrumbsProvider provider; + private String tooltip; CrumbPresentation presentation; PsiCrumb(PsiElement element, BreadcrumbsProvider provider) { - super(provider, element); + super(provider.getElementIcon(element), provider.getElementInfo(element), null, provider.getContextActions(element)); anchor = PsiAnchor.create(element); - tooltipEvaluator = provider.isDeferredTooltipEvaluation() ? e -> provider.getElementTooltip(e) : null; + this.provider = provider; } @Override public String getTooltip() { - if (tooltipEvaluator != null) { + if (tooltip == null && provider != null) { PsiElement element = getElement(this); - if (element != null) { - return tooltipEvaluator.apply(element); - } + if (element != null) tooltip = provider.getElementTooltip(element); + provider = null; // do not try recalculate tooltip } - return super.getTooltip(); + return tooltip; } @Nullable