From 3757d90f0cb9815bd6aca004693b13210cea95f4 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 25 Mar 2010 13:50:01 +0300 Subject: [PATCH] http://ea.jetbrains.com/browser/ea_problems/16553 --- .../src/com/intellij/openapi/editor/impl/EditorImpl.java | 1 + .../com/intellij/openapi/editor/impl/HighlighterList.java | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) 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 aae9bffc6093..2bf806f03701 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 @@ -2158,6 +2158,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi public int logicalPositionToOffset(@NotNull LogicalPosition pos) { assertReadAccess(); + assertIsDispatchThread(); if (myDocument.getLineCount() == 0) return 0; if (pos.line < 0) throw new IndexOutOfBoundsException("Wrong line: " + pos.line); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java index 548f983e306e..1865603f46eb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/HighlighterList.java @@ -30,6 +30,7 @@ public abstract class HighlighterList { private final SortedList mySegmentHighlighters = new SortedList(MY_RANGE_COMPARATOR) { @Override protected void sort(List delegate) { + assertDispatchThread(); Iterator it = delegate.iterator(); boolean needSort = false; RangeHighlighterImpl lastHighlighter = null; @@ -69,8 +70,9 @@ public abstract class HighlighterList { private static final Comparator MY_RANGE_COMPARATOR = new Comparator() { public int compare(RangeHighlighterImpl r1, RangeHighlighterImpl r2) { - if (r1.getAffectedAreaStartOffset() != r2.getAffectedAreaStartOffset()) { - return r1.getAffectedAreaStartOffset() - r2.getAffectedAreaStartOffset(); + int o = r1.getAffectedAreaStartOffset() - r2.getAffectedAreaStartOffset(); + if (o != 0) { + return o; } if (r1.getLayer() != r2.getLayer()) {