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 e80d25cb7902..525758c9b44a 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 @@ -1267,10 +1267,6 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse return myEditor.visualLineToY(line) + myEditor.getAscent() - width; } - int getHeadCenterY(FoldRegion foldRange) { - return getLineCenterY(myEditor.offsetToVisualLine(foldRange.getStartOffset())); - } - private void drawFoldingAnchor(double width, @NotNull Rectangle clip, @NotNull Graphics2D g, int visualLine, @NotNull DisplayedFoldingAnchor.Type type, boolean active) { double off = width / 4; 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 7630f58437d4..e4d6737150ff 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 @@ -3901,7 +3901,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (range != null) { final boolean expansion = !range.isExpanded(); - int scrollShift = y - getScrollingModel().getVerticalScrollOffset(); + int scrollShift = expansion ? 0 : visualLineToY(yToVisualLine(y)) - getScrollingModel().getVerticalScrollOffset(); getFoldingModel().runBatchFoldingOperation(() -> { range.setExpanded(expansion); if (e.isAltDown()) { @@ -3912,8 +3912,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } } }, true, false); - y = myGutterComponent.getHeadCenterY(range); - getScrollingModel().scrollVertically(y - scrollShift); + if (!expansion) { + int newY = visualLineToY(offsetToVisualLine(range.getStartOffset())); + EditorUtil.runWithAnimationDisabled(EditorImpl.this, () -> myScrollingModel.scrollVertically(newY - scrollShift)); + } myGutterComponent.updateSize(); validateMousePointer(e); e.consume();