From 0972f795d92d74899cfdcdfe1dd5a93a3daee250 Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Wed, 24 Nov 2010 15:28:16 +0300 Subject: [PATCH] IDEA-57848 Not display caret with the mouse cursor correctly Corrected (x; y) -> VisualPosition mapping algorithm --- .../src/com/intellij/openapi/editor/impl/EditorImpl.java | 9 +++++++-- 1 file changed, 7 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 67d4cd713ea5..8e03c12ff239 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 @@ -960,6 +960,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (charWidth < 0) { charWidth = EditorUtil.charWidth(c, fontType, this); } + + if (charWidth <= 0) { + charWidth = spaceSize; + } if (x >= px && c == '\t' && !onSoftWrapDrawing) { if (mySettings.isCaretInsideTabs()) { @@ -975,8 +979,9 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if ((x - px) * 2 < charWidth) column++; } else { - column += (px - x) / spaceSize; - if ((px - x) * 2 >= spaceSize) { + int diff = px - x; + column += diff / spaceSize; + if ((diff % spaceSize) * 2 >= spaceSize) { column++; } }