void (@NotNull final Project project, final AnActionEvent event) { Editor editor = event.getData(CommonDataKeys.EDITOR); boolean isFromGutterClick = event.getData(XLineBreakpointManager.BREAKPOINT_LINE_KEY) != null; InputEvent inputEvent = event.getInputEvent(); boolean isAltClick = isFromGutterClick && inputEvent != null && inputEvent.isAltDown(); boolean isShiftClick = isFromGutterClick && inputEvent != null && inputEvent.isShiftDown(); // do not toggle more than once on the same line Set<Integer> processedLines = new HashSet<>(); for (XSourcePosition position : ToggleLineBreakpointAction.getAllPositionsForBreakpoints(project, event.getDataContext())) { if (processedLines.add(position.getLine())) { XBreakpointUtil.toggleLineBreakpoint(project, position, editor, isAltClick || myTemporary, !isFromGutterClick, !isFromGutterClick || (!isShiftClick && !Registry.is("debugger.click.disable.breakpoints"))) .onSuccess(breakpoint -> { if (!isFromGutterClick) return; setupLogBreakpoint(breakpoint, inputEvent, editor, project); }); } } }