From cc23d3a898c3e3faca7176bd9ffb53aa7b27aad6 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Tue, 21 Apr 2015 11:08:35 +0300 Subject: [PATCH] IDEA-139316 Copy Action in the Console search field does not work properly --- .../intellij/ide/impl/DataManagerImpl.java | 22 +++++++++---------- .../ide/impl/dataRules/CopyProviderRule.java | 4 ++-- .../ide/impl/dataRules/CutProviderRule.java | 4 ++-- .../ide/impl/dataRules/PasteProviderRule.java | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java index d3f693ba3b4b..7ae8d39b8ab5 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java @@ -305,6 +305,17 @@ public class DataManagerImpl extends DataManager { return dataContext instanceof UserDataHolder ? ((UserDataHolder)dataContext).getUserData(dataKey) : null; } + @Nullable + public static Editor validateEditor(Editor editor) { + Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); + if (focusOwner instanceof JComponent) { + final JComponent jComponent = (JComponent)focusOwner; + if (jComponent.getClientProperty("AuxEditorComponent") != null) return null; // Hack for EditorSearchComponent + } + + return editor; + } + private static class NullResult { public static final NullResult INSTANCE = new NullResult(); } @@ -383,17 +394,6 @@ public class DataManagerImpl extends DataManager { return ((DataManagerImpl)DataManager.getInstance()).getData(dataId, component); } - @Nullable - private static Editor validateEditor(Editor editor) { - Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); - if (focusOwner instanceof JComponent) { - final JComponent jComponent = (JComponent)focusOwner; - if (jComponent.getClientProperty("AuxEditorComponent") != null) return null; // Hack for EditorSearchComponent - } - - return editor; - } - @NonNls public String toString() { return "component=" + myRef.get(); diff --git a/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CopyProviderRule.java b/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CopyProviderRule.java index b30850e393ac..15ef17258e97 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CopyProviderRule.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CopyProviderRule.java @@ -15,15 +15,15 @@ */ package com.intellij.ide.impl.dataRules; +import com.intellij.ide.impl.DataManagerImpl; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataProvider; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ex.EditorEx; public class CopyProviderRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - final Editor editor = CommonDataKeys.EDITOR.getData(dataProvider); + final Editor editor = DataManagerImpl.validateEditor(CommonDataKeys.EDITOR.getData(dataProvider)); if (editor instanceof EditorEx) { return ((EditorEx) editor).getCopyProvider(); } diff --git a/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CutProviderRule.java b/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CutProviderRule.java index 7470f6551c0c..c550c69a8cfb 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CutProviderRule.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/dataRules/CutProviderRule.java @@ -15,15 +15,15 @@ */ package com.intellij.ide.impl.dataRules; +import com.intellij.ide.impl.DataManagerImpl; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataProvider; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ex.EditorEx; public class CutProviderRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - final Editor editor = CommonDataKeys.EDITOR.getData(dataProvider); + final Editor editor = DataManagerImpl.validateEditor(CommonDataKeys.EDITOR.getData(dataProvider)); if (editor instanceof EditorEx) { return ((EditorEx) editor).getCutProvider(); } diff --git a/platform/platform-impl/src/com/intellij/ide/impl/dataRules/PasteProviderRule.java b/platform/platform-impl/src/com/intellij/ide/impl/dataRules/PasteProviderRule.java index a70b8553f917..40aa7a13c36b 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/dataRules/PasteProviderRule.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/dataRules/PasteProviderRule.java @@ -15,15 +15,15 @@ */ package com.intellij.ide.impl.dataRules; +import com.intellij.ide.impl.DataManagerImpl; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataProvider; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ex.EditorEx; public class PasteProviderRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - final Editor editor = CommonDataKeys.EDITOR.getData(dataProvider); + final Editor editor = DataManagerImpl.validateEditor(CommonDataKeys.EDITOR.getData(dataProvider)); if (editor instanceof EditorEx) { return ((EditorEx) editor).getPasteProvider(); }