boolean (@NotNull AWTEvent event) { if (event.getID() != MouseEvent.MOUSE_PRESSED) { return false; } if (ourShowingStep == null) { return false; } WizardPopup eachParent = ourShowingStep; final MouseEvent mouseEvent = (MouseEvent) event; Point point = (Point) mouseEvent.getPoint().clone(); SwingUtilities.convertPointToScreen(point, mouseEvent.getComponent()); while (true) { if (eachParent.isDisposed() || !eachParent.getContent().isShowing()) { WizardPopup currentActiveRoot = getActiveRoot(); if (eachParent.getParent() == currentActiveRoot) { currentActiveRoot.cancel(); } return false; } if (eachParent.getBounds().contains(point) || !eachParent.canClose()) { return false; } eachParent = eachParent.getParent(); if (eachParent == null) { getActiveRoot().cancel(); return false; } } }