diff --git a/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Breadcrumbs.java b/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Breadcrumbs.java index 565bd84814d5..5fe6626b8e71 100644 --- a/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Breadcrumbs.java +++ b/platform/platform-api/src/com/intellij/ui/components/breadcrumbs/Breadcrumbs.java @@ -20,6 +20,7 @@ import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.markup.EffectType; import com.intellij.openapi.editor.markup.TextAttributes; +import com.intellij.openapi.util.registry.Registry; import com.intellij.ui.ColorUtil; import com.intellij.ui.paint.EffectPainter; import com.intellij.ui.paint.RectanglePainter; @@ -192,14 +193,22 @@ public class Breadcrumbs extends JComponent { protected void paint(Graphics2D g, int x, int y, int width, int height, Crumb crumb, int thickness) { if (thickness > 0) { - Color foreground = getForeground(crumb); + Color foreground = getMarkerForeground(crumb); if (foreground != null) { - g.setColor(ColorUtil.toAlpha(foreground, (int)(.6 * foreground.getAlpha()))); + g.setColor(foreground); g.fillRect(x, y + height - thickness, width, thickness); } } } + protected Color getMarkerForeground(Crumb crumb) { + if (!Registry.is("editor.breadcrumbs.marker")) return null; + Color foreground = getForeground(crumb); + if (foreground == null) return null; + double alpha = Registry.doubleValue("editor.breadcrumbs.marker.alpha"); + return ColorUtil.toAlpha(foreground, (int)(alpha * foreground.getAlpha())); + } + protected Font getFont(Crumb crumb) { Font font = getFont(); if (font == null) return null; diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index 0421d25100fc..233d88078af8 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -935,8 +935,17 @@ editor.breadcrumbs.highlight.on.hover.description=Highlight corresponding ranges editor.breadcrumbs.above=false editor.breadcrumbs.above.description=Show breadcrumbs above or below an editor -editor.breadcrumbs.small=false -editor.breadcrumbs.small.description=Use small font to show breadcrumbs +editor.breadcrumbs.small.font=false +editor.breadcrumbs.small.font.description=Use small font to show breadcrumbs + +editor.breadcrumbs.system.font=false +editor.breadcrumbs.system.font.description=Use system font to show breadcrumbs + +editor.breadcrumbs.marker=true +editor.breadcrumbs.marker.description=Use a special line to mark a hovered or current breadcrumbs + +editor.breadcrumbs.marker.alpha=0.6 +editor.breadcrumbs.marker.alpha.description=A relative transparency of a marker line for breadcrumbs testDiscovery.enabled=false testDiscovery.enabled.description=Enable instrumentation during tests to be able to start 'tests which pass this code' later diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java b/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java index e5dc541ed3ce..b8408f646dd7 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java @@ -18,9 +18,9 @@ package com.intellij.xml.breadcrumbs; import com.intellij.openapi.editor.colors.EditorColors; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.util.registry.Registry; -import com.intellij.ui.RelativeFont; import com.intellij.ui.components.breadcrumbs.Breadcrumbs; import com.intellij.ui.components.breadcrumbs.Crumb; +import com.intellij.util.ui.UIUtil; import javax.swing.border.EmptyBorder; import java.awt.Color; @@ -45,9 +45,17 @@ final class PsiBreadcrumbs extends Breadcrumbs { @Override public void setFont(Font font) { - super.setFont(Registry.is("editor.breadcrumbs.small") - ? RelativeFont.SMALL.derive(font) - : font); + if (font != null) { + float size = font.getSize2D(); + if (Registry.is("editor.breadcrumbs.system.font")) { + Font system = UIUtil.getLabelFont(); + if (system != null) font = system; + } + if (Registry.is("editor.breadcrumbs.small.font")) { + font = font.deriveFont(size / 1.09f); + } + } + super.setFont(font); } @Override