From a4bc67891b6ca2c49a28e776225cf6537e5c11d3 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 29 Dec 2015 14:10:28 +0300 Subject: [PATCH] IDEA-137936 diff: reduce editor gutter width * do not paint debugger-specific gap area * do not paint right free painters area --- .../src/com/intellij/diff/util/DiffUtil.java | 1 + .../editor/ex/EditorGutterComponentEx.java | 2 + .../impl/EditorGutterComponentImpl.java | 37 +++++++++++++++---- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java index 57ed72f9e5ec..d7c9affaeff6 100644 --- a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java @@ -187,6 +187,7 @@ public class DiffUtil { editor.getSettings().setShowIntentionBulb(false); ((EditorMarkupModel)editor.getMarkupModel()).setErrorStripeVisible(true); editor.getGutterComponentEx().setShowDefaultGutterPopup(false); + editor.getGutterComponentEx().setShowRightFreePaintersArea(false); if (enableFolding) { setFoldingModelSupport(editor); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorGutterComponentEx.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorGutterComponentEx.java index fa8359127337..393e4761d879 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorGutterComponentEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorGutterComponentEx.java @@ -72,4 +72,6 @@ public abstract class EditorGutterComponentEx extends JComponent implements Edit public abstract void setGutterPopupGroup(@Nullable ActionGroup group); public abstract void setPaintBackground(boolean value); + + public abstract void setShowRightFreePaintersArea(boolean value); } 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 63f76aa7da98..43d91537532b 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 @@ -103,7 +103,7 @@ import java.util.List; * * @@ -146,6 +146,7 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse private TIntObjectHashMap myTextFgColors = new TIntObjectHashMap(); private boolean myPaintBackground = true; private boolean myLeftFreePaintersAreaShown; + private boolean myRightFreePaintersAreaShown = true; private int myLastNonDumbModeIconAreaWidth = 0; @SuppressWarnings("unchecked") @@ -884,8 +885,8 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse ((LineMarkerRendererEx)renderer).getPosition() == LineMarkerRendererEx.Position.LEFT; int height = endY - startY; - int w = leftPosition ? FREE_PAINTERS_LEFT_AREA_WIDTH : FREE_PAINTERS_RIGHT_AREA_WIDTH; - int x = leftPosition ? getLineMarkerAreaOffset() : getLineMarkerFreePaintersAreaOffset() - 1; + int w = leftPosition ? getLeftFreePaintersAreaWidth() : getRightFreePaintersAreaWidth(); + int x = leftPosition ? getLeftFreePaintersAreaOffset() : getLineMarkerFreePaintersAreaOffset() - 1; return new Rectangle(x, startY, w, height); } @@ -1184,9 +1185,8 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse } public int getLineMarkerAreaWidth() { - return isLineMarkersShown() ? ((myLeftFreePaintersAreaShown ? FREE_PAINTERS_LEFT_AREA_WIDTH : 0) + - myIconsAreaWidth + GAP_BETWEEN_AREAS + FREE_PAINTERS_RIGHT_AREA_WIDTH) : - 0; + return isLineMarkersShown() ? getLeftFreePaintersAreaWidth() + myIconsAreaWidth + + getDebuggerAdditionalAreaWidth() + getRightFreePaintersAreaWidth() : 0; } public void setLineNumberAreaWidthFunction(@NotNull TIntFunction calculator) { @@ -1267,12 +1267,24 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse @Override public int getIconAreaOffset() { - return getLineMarkerAreaOffset() + (myLeftFreePaintersAreaShown ? FREE_PAINTERS_LEFT_AREA_WIDTH : 0); + return getLineMarkerAreaOffset() + getLeftFreePaintersAreaWidth(); + } + + public int getLeftFreePaintersAreaOffset() { + return getLineMarkerAreaOffset(); } @Override public int getLineMarkerFreePaintersAreaOffset() { - return getIconAreaOffset() + myIconsAreaWidth + GAP_BETWEEN_AREAS; + return getIconAreaOffset() + myIconsAreaWidth + getDebuggerAdditionalAreaWidth(); + } + + public int getLeftFreePaintersAreaWidth() { + return myLeftFreePaintersAreaShown ? FREE_PAINTERS_LEFT_AREA_WIDTH : 0; + } + + public int getRightFreePaintersAreaWidth() { + return myRightFreePaintersAreaShown ? FREE_PAINTERS_RIGHT_AREA_WIDTH : 0; } @Override @@ -1280,6 +1292,10 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse return myIconsAreaWidth; } + public int getDebuggerAdditionalAreaWidth() { + return isRealEditor() ? GAP_BETWEEN_AREAS : 0; + } + private boolean isMirrored() { return myEditor.getVerticalScrollbarOrientation() != EditorEx.VERTICAL_SCROLLBAR_RIGHT; } @@ -1658,6 +1674,11 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse myPaintBackground = value; } + @Override + public void setShowRightFreePaintersArea(boolean value) { + myRightFreePaintersAreaShown = value; + } + private void invokePopup(MouseEvent e) { final ActionManager actionManager = ActionManager.getInstance(); if (myEditor.getMouseEventArea(e) == EditorMouseEventArea.ANNOTATIONS_AREA) {