From cac022e77f35f35e987fdea1388fd8eee7815648 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Thu, 14 Feb 2013 20:30:41 +0400 Subject: [PATCH] IDEA-98684 Setting a breakpoint via mouse also places the caret in this line --- .../intellij/openapi/editor/impl/EditorImpl.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 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 88c75e316646..9d73ac77e366 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 @@ -5435,8 +5435,15 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi final int oldStart = mySelectionModel.getSelectionStart(); final int oldEnd = mySelectionModel.getSelectionEnd(); - - moveCaretToScreenPos(x, y); + + // Don't move caret on mouse press above gutter line markers area (a place where break points, 'override', 'implements' etc icons + // are drawn) and annotations area. E.g. we don't want to change caret position if a user sets new break point (clicks + // at 'line markers' area). + if (e.getSource() != myGutterComponent + || (eventArea != EditorMouseEventArea.LINE_MARKERS_AREA && eventArea != EditorMouseEventArea.ANNOTATIONS_AREA)) + { + moveCaretToScreenPos(x, y); + } if (e.isPopupTrigger()) return isNavigation; @@ -5486,11 +5493,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } else { int startToUse = oldSelectionStart; - int endToUse = caretOffset; if (mySelectionModel.isUnknownDirection() && caretOffset > startToUse) { startToUse = Math.min(oldStart, oldEnd); } - mySelectionModel.setSelection(startToUse, endToUse); + mySelectionModel.setSelection(startToUse, caretOffset); } } else {