void (@NotNull EditorMouseEvent e) { if (!ExperimentalUI.isNewUI() || !ShowBreakpointsOverLineNumbersAction.isSelected()) return; Editor editor = e.getEditor(); if (editor.getProject() != myProject || editor.getEditorKind() != EditorKind.MAIN_EDITOR) return; EditorGutter editorGutter = editor.getGutter(); if (editorGutter instanceof EditorGutterComponentEx gutter) { if (e.getArea() == EditorMouseEventArea.LINE_NUMBERS_AREA && EditorUtil.isBreakPointsOnLineNumbers()) { int line = EditorUtil.yToLogicalLineNoCustomRenderers(editor, e.getMouseEvent().getY()); Document document = editor.getDocument(); if (DocumentUtil.isValidLine(line, document)) { XSourcePositionImpl position = XSourcePositionImpl.create(FileDocumentManager.getInstance().getFile(document), line); if (position != null) { if (myLastPosition == null || !myLastPosition.getFile().equals(position.getFile()) || myLastPosition.getLine() != line) { // drop an icon first and schedule the available types calculation clear(gutter); myLastPosition = position; lineChangeHandler.lineChanged(editor, position); } return; } } } if (myLastIcon != null) { clear(gutter); myLastPosition = null; lineChangeHandler.exitedGutter(); } } }