From 5828214edbb06f7fd2b5856c44221da1d21c3f9c Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Thu, 4 May 2017 21:52:47 +0300 Subject: [PATCH] IDEA-169849 Can't undo in Find in Path --- .../intellij/find/impl/FindPopupPanel.java | 1 - .../keymap/impl/IdeKeyEventDispatcher.java | 19 ++++++------------- 2 files changed, 6 insertions(+), 14 deletions(-) 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() {