void (AWTEvent event) { if (!isShown()) { return; } MouseEvent mouseEvent = (MouseEvent)event; if (mouseEvent.getClickCount() == 0) { return; } final int id = mouseEvent.getID(); if (id != MouseEvent.MOUSE_PRESSED && id != MouseEvent.MOUSE_RELEASED && id != MouseEvent.MOUSE_CLICKED) { return; } final Component sourceComponent = mouseEvent.getComponent(); Boolean property = ClientProperty.get(sourceComponent, IGNORE_MOUSE_EVENT); if (property != null && property.equals(true)) { return; } final Point originalPoint = mouseEvent.getPoint(); final Editor editor = getEditor(); if (editor == null) return; // do not cancel editing if we click or scroll in editor popup final List<JBPopup> popups = JBPopupFactory.getInstance().getChildPopups(myInplaceEditorComponent); for (JBPopup popup : popups) { if (!popup.isDisposed() && SwingUtilities.isDescendingFrom(sourceComponent, ComponentUtil.getWindow(popup.getContent()))) { return; } } Project project = editor.getProject(); LookupImpl activeLookup = project != null ? (LookupImpl)LookupManager.getInstance(project).getActiveLookup() : null; if (activeLookup != null){ final Point lookupPoint = SwingUtilities.convertPoint(sourceComponent, originalPoint, activeLookup.getComponent()); if (activeLookup.getComponent().getBounds().contains(lookupPoint)){ return; //mouse click inside lookup } else { activeLookup.hide(); //hide popup on mouse position changed } } final Point point = SwingUtilities.convertPoint(sourceComponent, originalPoint, myInplaceEditorComponent); if (myInplaceEditorComponent.contains(point)) { return; } final Component componentAtPoint = SwingUtilities.getDeepestComponentAt(sourceComponent, originalPoint.x, originalPoint.y); for (Component comp = componentAtPoint; comp != null; comp = comp.getParent()) { if (comp instanceof ComboPopup) { doPopupOKAction(); return; } } if (ComponentUtil.getWindow(sourceComponent) == ComponentUtil.getWindow(myInplaceEditorComponent) && id == MouseEvent.MOUSE_PRESSED) { doOKAction(); } }