From 78dfecb7b29a1a80da197ca99e8feab91e2f7888 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Thu, 11 May 2017 18:36:49 +0300 Subject: [PATCH] IDEA-169924 do not scale a system font like editor --- .../util/resources/misc/registry.properties | 2 +- .../xml/breadcrumbs/BreadcrumbsXmlWrapper.java | 12 +++++++++--- .../xml/breadcrumbs/PsiBreadcrumbs.java | 17 ----------------- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index f5468be6656f..b4278746ce5f 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -943,7 +943,7 @@ 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.font=true +editor.breadcrumbs.small.font=false editor.breadcrumbs.small.font.description=Use small font to show breadcrumbs editor.breadcrumbs.system.font=true diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java index 0ff44c807ae4..75a5125b8412 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java @@ -70,6 +70,7 @@ import java.util.LinkedList; import java.util.PriorityQueue; import static com.intellij.ui.ScrollPaneFactory.createScrollPane; +import static com.intellij.util.ui.UIUtil.getLabelFont; /** * @author spleaner @@ -169,7 +170,7 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable { breadcrumbs.onHover(this::itemHovered); breadcrumbs.onSelect(this::itemSelected); - breadcrumbs.setFont(getEditorFont(myEditor)); + breadcrumbs.setFont(getNewFont(myEditor)); JScrollPane pane = createScrollPane(breadcrumbs, true); pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); @@ -191,7 +192,7 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable { @Override public void componentResized(ComponentEvent event) { breadcrumbs.updateBorder(gutterComponent.getWhitespaceSeparatorOffset()); - breadcrumbs.setFont(getEditorFont(myEditor)); + breadcrumbs.setFont(getNewFont(myEditor)); } }; @@ -216,7 +217,7 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable { private void updateCrumbs() { if (breadcrumbs != null && myEditor != null && !myEditor.isDisposed()) { - breadcrumbs.setFont(getEditorFont(myEditor)); + breadcrumbs.setFont(getNewFont(myEditor)); updateCrumbs(myEditor.getCaretModel().getLogicalPosition()); } } @@ -516,6 +517,11 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable { if (EditorEx.PROP_FONT_SIZE.equals(event.getPropertyName())) queueUpdate(); } + private static Font getNewFont(Editor editor) { + Font font = editor == null || Registry.is("editor.breadcrumbs.system.font") ? getLabelFont() : getEditorFont(editor); + return font == null || !Registry.is("editor.breadcrumbs.small.font") ? font : font.deriveFont(font.getSize2D() / 1.09f); + } + private static Font getEditorFont(Editor editor) { return ComplementaryFontsRegistry.getFontAbleToDisplay('a', Font.PLAIN, editor.getColorsScheme().getFontPreferences(), null).getFont(); diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java b/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java index e33c27ba508a..feb7af52e495 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/PsiBreadcrumbs.java @@ -22,11 +22,9 @@ import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.util.registry.Registry; 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; -import java.awt.Font; import java.awt.Graphics2D; /** @@ -45,21 +43,6 @@ final class PsiBreadcrumbs extends Breadcrumbs { super.paintMarker(g, x, y, width, above ? height : thickness, crumb, thickness); } - @Override - public void setFont(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.deriveFont(size); - } - if (Registry.is("editor.breadcrumbs.small.font")) { - font = font.deriveFont(size / 1.09f); - } - } - super.setFont(font); - } - @Override public Color getForeground() { if (!isForegroundSet()) {