From dec4c7a36abf2bea1e96cc13127bc93dcdb3b2cd Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Mon, 8 Dec 2014 18:22:52 +0300 Subject: [PATCH] partly reverted previous fix: update only gutter size on layout to avoid scrolling slow down, but still fix blinking --- .../editor/impl/EditorGutterComponentImpl.java | 14 ++++++++++---- .../intellij/openapi/editor/impl/EditorImpl.java | 11 ++++++++++- 2 files changed, 20 insertions(+), 5 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 1d03c327030d..f8e453e49f1b 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 @@ -544,8 +544,12 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse } public void updateSize() { + updateSize(false); + } + + void updateSize(boolean onLayout) { int prevHash = sizeHash(); - updateSizeInner(); + updateSizeInner(onLayout); if (prevHash != sizeHash()) { fireResized(); @@ -553,9 +557,11 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse repaint(); } - private void updateSizeInner() { - calcIconAreaWidth(); - calcAnnotationsSize(); + private void updateSizeInner(boolean onLayout) { + if (!onLayout) { + calcIconAreaWidth(); + calcAnnotationsSize(); + } calcAnnotationExtraSize(); } 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 d11f9fb6b879..59ae0036cfad 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 @@ -959,7 +959,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi public void componentResized(@NotNull ComponentEvent e) { myMarkupModel.recalcEditorDimensions(); myMarkupModel.repaint(-1, -1); - myGutterComponent.updateSize(); } }); } @@ -6755,6 +6754,16 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi setupCorners(); } + @Override + public void layout() { + if (isInDistractionFreeMode()) { + // re-calc gutter extra size after editor size is set + // & layout once again to avoid blinking + myGutterComponent.updateSize(true); + } + super.layout(); + } + @Override protected void processMouseWheelEvent(@NotNull MouseWheelEvent e) { if (mySettings.isWheelFontChangeEnabled() && !MouseGestureManager.getInstance().hasTrackpad()) {