From d9edb2bcb693eb08ba6395786e09849b2005e5c5 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Tue, 31 Jul 2018 00:06:52 +0300 Subject: [PATCH] IDEA-190270 After clearing search, the cursor jump back --- .../lang-impl/src/com/intellij/find/EditorSearchSession.java | 4 +++- platform/lang-impl/src/com/intellij/find/SearchTextArea.java | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java b/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java index e6e15804f5f2..ebbfad5f25f3 100644 --- a/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java +++ b/platform/lang-impl/src/com/intellij/find/EditorSearchSession.java @@ -30,6 +30,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.components.labels.LinkLabel; import com.intellij.util.ObjectUtils; +import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.update.Activatable; import com.intellij.util.ui.update.UiNotifyConnector; import org.jetbrains.annotations.NonNls; @@ -426,7 +427,8 @@ public class EditorSearchSession implements SearchSession, if (mySearchResults != null) { mySearchResults.clear(); } - if (allowedToChangedEditorSelection) { + if (allowedToChangedEditorSelection + && !UIUtil.isClientPropertyTrue(myComponent.getSearchTextComponent(), SearchTextArea.JUST_CLEARED_KEY)) { restoreInitialCaretPositionAndSelection(); } } diff --git a/platform/lang-impl/src/com/intellij/find/SearchTextArea.java b/platform/lang-impl/src/com/intellij/find/SearchTextArea.java index 0cafcf497d3f..6c4c3d4520e2 100644 --- a/platform/lang-impl/src/com/intellij/find/SearchTextArea.java +++ b/platform/lang-impl/src/com/intellij/find/SearchTextArea.java @@ -68,6 +68,7 @@ import static java.awt.event.InputEvent.*; import static javax.swing.ScrollPaneConstants.*; public class SearchTextArea extends NonOpaquePanel implements PropertyChangeListener, FocusListener { + public static final String JUST_CLEARED_KEY = "JUST_CLEARED"; public static final KeyStroke NEW_LINE_KEYSTROKE = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, (SystemInfo.isMac ? META_DOWN_MASK : CTRL_DOWN_MASK) | SHIFT_DOWN_MASK); private final JTextArea myTextArea; @@ -128,6 +129,9 @@ public class SearchTextArea extends NonOpaquePanel implements PropertyChangeList myTextArea.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { + if (e.getType() == DocumentEvent.EventType.INSERT) { + myTextArea.putClientProperty(JUST_CLEARED_KEY, null); + } updateIconsLayout(); } }); @@ -415,6 +419,7 @@ public class SearchTextArea extends NonOpaquePanel implements PropertyChangeList @Override public void actionPerformed(AnActionEvent e) { + myTextArea.putClientProperty(JUST_CLEARED_KEY, !myTextArea.getText().isEmpty()); myTextArea.setText(""); } }