diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java b/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java index 47cea0dc4e2d..dd7ab77ae7e3 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java @@ -173,7 +173,6 @@ public class FindPopupPanel extends JBPanel implements FindUI, DataProvider { .setResizable(true) .setMayBeParent(true) .setCancelOnClickOutside(true) - .setModalContext(false) .setRequestFocus(true) .setCancelCallback(() -> { if (!myCanClose.get()) return false; diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java index e0e45cfb5025..b2acbd5450ae 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java @@ -250,6 +250,11 @@ public final class IdeKeyEventDispatcher implements Disposable { * @throws IllegalArgumentException if {@code component} is {@code null}. */ public static boolean isModalContext(@NotNull Component component) { + JBPopup popup = component instanceof JComponent ? (JBPopup)((JComponent)component).getRootPane().getClientProperty(JBPopup.KEY) : null; + if (popup != null) { + return popup.isModalContext(); + } + Window window = UIUtil.getWindow(component); if (window instanceof IdeFrameImpl) { @@ -271,19 +276,7 @@ public final class IdeKeyEventDispatcher implements Disposable { return false; } - boolean isFloatingDecorator = window instanceof FloatingDecorator; - - boolean isPopup = !(component instanceof JFrame) && !(component instanceof JDialog); - if (isPopup) { - if (component instanceof JWindow) { - JBPopup popup = (JBPopup)((JWindow)component).getRootPane().getClientProperty(JBPopup.KEY); - if (popup != null) { - return popup.isModalContext(); - } - } - } - - return !isFloatingDecorator; + return !(window instanceof FloatingDecorator); } private boolean inWaitForSecondStrokeState() {