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 60ba66570ae3..ee0653995ab5 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 @@ -2041,9 +2041,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (!dim.equals(myPreferredSize) && !myDocument.isInBulkUpdate()) { dim = mySizeAdjustmentStrategy.adjust(dim, myPreferredSize, this); - if (dim == null) { - return; - } myPreferredSize = dim; myGutterComponent.updateSize(); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorSizeAdjustmentStrategy.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorSizeAdjustmentStrategy.java index d2400ec5db13..2a72d12a6002 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorSizeAdjustmentStrategy.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorSizeAdjustmentStrategy.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ import javax.swing.*; import java.awt.*; /** - * This class is aimed to help {@link EditorImpl the editor} when user extensively modifies the longest line + * This class is aimed to help {@link EditorImpl the editor} when user extensively modifies the longest line * at the document (e.g. is typing at its end). *

* The problem is that the longest line's width is a {@link JComponent#getPreferredSize() preferred size's width} as well. @@ -37,39 +37,43 @@ import java.awt.*; * is permanently increasing (the user is typing at the end of the longest line) etc. See method javadocs for more details. *

* Not thread-safe. - * + * * @author Denis Zhdanov * @since 6/17/11 2:45 PM */ -public class EditorSizeAdjustmentStrategy { - - /** Amount of time (in milliseconds) to keep information about preferred size change. */ +class EditorSizeAdjustmentStrategy { + /** + * Amount of time (in milliseconds) to keep information about preferred size change. + */ private static final long TIMING_TTL_MILLIS = 10000L; - - /** Constant that indicates minimum number of preferred size changes per target amount of time that is considered to be frequent. */ + + /** + * Constant that indicates minimum number of preferred size changes per target amount of time that is considered to be frequent. + */ private static final int FREQUENT_SIZE_CHANGES_NUMBER = 10; - - /** Default number of columns to reserve during frequent typing at the end of the longest document line. */ + + /** + * Default number of columns to reserve during frequent typing at the end of the longest document line. + */ private static final int DEFAULT_RESERVE_COLUMNS_NUMBER = 4; - private final Alarm myAlarm = new Alarm(); + private final Alarm myAlarm = new Alarm(); private final TLongArrayList myTimings = new TLongArrayList(); private int myReserveColumns = DEFAULT_RESERVE_COLUMNS_NUMBER; - private boolean mySkip; - + private boolean myInsideValidation; + /** * Asks to adjust new preferred size appliance if necessary. - * - * @param newPreferredSize newly calculated preferred size that differs from the old preferred size - * @param oldPreferredSize old preferred size (if any) - * @param editor target editor - * @return preferred size to use (given 'new preferred size' may be adjusted); null if given - * new preferred size should not be applied + * + * @param newPreferredSize newly calculated preferred size that differs from the old preferred size + * @param oldPreferredSize old preferred size (if any) + * @param editor target editor + * @return preferred size to use (given 'new preferred size' may be adjusted) */ - @Nullable - public Dimension adjust(@NotNull Dimension newPreferredSize, @Nullable Dimension oldPreferredSize, @NotNull EditorImpl editor) { - if (oldPreferredSize == null || mySkip) { + @NotNull + Dimension adjust(@NotNull Dimension newPreferredSize, @Nullable Dimension oldPreferredSize, @NotNull EditorImpl editor) { + if (oldPreferredSize == null || myInsideValidation) { return newPreferredSize; } // Process only width change. @@ -113,16 +117,15 @@ public class EditorSizeAdjustmentStrategy { } if (endIndex > 0) { myTimings.remove(0, endIndex); - } + } } private void scheduleSizeUpdate(@NotNull EditorImpl editor) { myAlarm.cancelAllRequests(); myAlarm.addRequest(new UpdateSizeTask(editor), 1000); } - + private class UpdateSizeTask implements Runnable { - private final EditorImpl myEditor; UpdateSizeTask(@NotNull EditorImpl editor) { @@ -131,14 +134,14 @@ public class EditorSizeAdjustmentStrategy { @Override public void run() { - mySkip = true; + myInsideValidation = true; myReserveColumns = DEFAULT_RESERVE_COLUMNS_NUMBER; myTimings.clear(); try { myEditor.validateSize(); } finally { - mySkip = false; + myInsideValidation = false; } } }