From 26b72fd7e84ca69ba0b41ce96deeb38f26457c7f Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 28 Mar 2016 10:52:26 +0300 Subject: [PATCH] enable line numbers in editor by default (IDEA-153505) --- .../impl/EditorGutterComponentImpl.java | 29 ++++++++++--------- .../openapi/editor/impl/EditorImpl.java | 7 ----- .../src/DefaultColorSchemesManager.xml | 4 +-- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java index ddaf34f1c13d..1ae6ffe72332 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java @@ -140,7 +140,6 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse private String myLastGutterToolTip = null; @NotNull private TIntFunction myLineNumberConvertor; @Nullable private TIntFunction myAdditionalLineNumberConvertor; - private TIntFunction myLineNumberAreaWidthFunction; private boolean myShowDefaultGutterPopup = true; @Nullable private ActionGroup myCustomGutterPopupGroup; private TIntObjectHashMap myTextFgColors = new TIntObjectHashMap<>(); @@ -509,10 +508,17 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse return color != null ? color : EditorColors.GUTTER_BACKGROUND.getDefaultColor(); } + private Font getFontForLineNumbers() { + Font editorFont = myEditor.getColorsScheme().getFont(EditorFontType.PLAIN); + float editorFontSize = editorFont.getSize2D(); + return editorFont.deriveFont(Math.max(1f, editorFontSize - 1f)); + } + + private int calcLineNumbersAreaWidth(int maxLineNumber) { + return getFontMetrics(getFontForLineNumbers()).stringWidth(Integer.toString(maxLineNumber + 1)); + } + private void doPaintLineNumbers(Graphics2D g, Rectangle clip, int offset, @NotNull TIntFunction convertor) { - if (!isLineNumbersShown()) { - return; - } int startLineNumber = myEditor.yToVisibleLine(clip.y); int endLineNumber = myEditor.yToVisibleLine(clip.y + clip.height) + 1; int lastLine = myEditor.logicalToVisualPosition( @@ -525,7 +531,8 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse Color color = myEditor.getColorsScheme().getColor(EditorColors.LINE_NUMBERS_COLOR); g.setColor(color != null ? color : JBColor.blue); - g.setFont(myEditor.getColorsScheme().getFont(EditorFontType.PLAIN)); + Font font = getFontForLineNumbers(); + g.setFont(font); AffineTransform old = setMirrorTransformIfNeeded(g, getLineNumberAreaOffset(), getLineNumberAreaWidth()); try { @@ -545,7 +552,7 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse int textOffset = isMirrored() ? offset - getLineNumberAreaWidth() - 1: - offset - myEditor.getFontMetrics(Font.PLAIN).stringWidth(s); + offset - g.getFontMetrics().stringWidth(s); g.drawString(s, textOffset, @@ -1244,20 +1251,16 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse getGapAfterIconsArea() + getRightFreePaintersAreaWidth() : 0; } - public void setLineNumberAreaWidthFunction(@NotNull TIntFunction calculator) { - myLineNumberAreaWidthFunction = calculator; - } - private void calcLineNumberAreaWidth() { - if (myLineNumberAreaWidthFunction == null || !isLineNumbersShown()) return; + if (!isLineNumbersShown()) return; int maxLineNumber = getMaxLineNumber(myLineNumberConvertor); - myLineNumberAreaWidth = myLineNumberAreaWidthFunction.execute(maxLineNumber); + myLineNumberAreaWidth = calcLineNumbersAreaWidth(maxLineNumber); myAdditionalLineNumberAreaWidth = 0; if (myAdditionalLineNumberConvertor != null) { int maxAdditionalLineNumber = getMaxLineNumber(myAdditionalLineNumberConvertor); - myAdditionalLineNumberAreaWidth = myLineNumberAreaWidthFunction.execute(maxAdditionalLineNumber); + myAdditionalLineNumberAreaWidth = calcLineNumbersAreaWidth(maxAdditionalLineNumber); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 7f2234ebb4fe..3803e828e352 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -84,7 +84,6 @@ import com.intellij.util.ui.*; import com.intellij.util.ui.update.Activatable; import com.intellij.util.ui.update.UiNotifyConnector; import gnu.trove.TIntArrayList; -import gnu.trove.TIntFunction; import gnu.trove.TIntHashSet; import gnu.trove.TIntIntHashMap; import org.intellij.lang.annotations.JdkConstants; @@ -570,12 +569,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi setFontSize(UISettings.getInstance().PRESENTATION_MODE_FONT_SIZE); } - myGutterComponent.setLineNumberAreaWidthFunction(new TIntFunction() { - @Override - public int execute(int lineNumber) { - return getFontMetrics(Font.PLAIN).stringWidth(Integer.toString(lineNumber + 1)); - } - }); myGutterComponent.updateSize(); Dimension preferredSize = getPreferredSize(); myEditorComponent.setSize(preferredSize); diff --git a/platform/platform-resources/src/DefaultColorSchemesManager.xml b/platform/platform-resources/src/DefaultColorSchemesManager.xml index 322d4adf3f61..d69022ea2bc8 100644 --- a/platform/platform-resources/src/DefaultColorSchemesManager.xml +++ b/platform/platform-resources/src/DefaultColorSchemesManager.xml @@ -14,7 +14,7 @@