From cd75cc24a2774a98dc11d7fc501c55b8bf2a6a1e Mon Sep 17 00:00:00 2001 From: Fulvio Ieva Date: Thu, 24 Jul 2014 10:52:56 +0200 Subject: [PATCH] Fix search and replace #2106 --- app/src/processing/app/FindReplace.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/app/src/processing/app/FindReplace.java b/app/src/processing/app/FindReplace.java index 137018b90..a792b935f 100644 --- a/app/src/processing/app/FindReplace.java +++ b/app/src/processing/app/FindReplace.java @@ -426,8 +426,23 @@ public class FindReplace extends JFrame implements ActionListener { public void replace() { if(findField.getText().length()==0) return; - editor.setSelectedText(replaceField.getText()); - editor.getSketch().setModified(true); // TODO is this necessary? + + int newpos = editor.getSelectionStart() - findField.getText().length(); + if (newpos < 0) newpos = 0; + editor.setSelection(newpos, newpos); + + boolean foundAtLeastOne = false; + + if ( find(false,false,searchAllFiles,-1)) { + foundAtLeastOne = true; + editor.setSelectedText(replaceField.getText()); + editor.getSketch().setModified(true); // TODO is this necessary? + } + + if ( !foundAtLeastOne ) { + Toolkit.getDefaultToolkit().beep(); + } + } /** @@ -453,7 +468,8 @@ public class FindReplace extends JFrame implements ActionListener { while ( true ) { if ( find(false,false,searchAllFiles,-1)) { foundAtLeastOne = true; - replace(); + editor.setSelectedText(replaceField.getText()); + editor.getSketch().setModified(true); // TODO is this necessary? } else { break; }