TextView.st
changeset 5555 7390d495b02c
parent 5554 f389396b26a6
child 5556 0a908345e353
--- a/TextView.st	Sun Jan 17 02:26:31 2016 +0100
+++ b/TextView.st	Sun Jan 17 11:49:35 2016 +0100
@@ -30,7 +30,8 @@
 		WordSelectCatchesBlanks LastSearchPatterns
 		NumRememberedSearchPatterns LastSearchIgnoredCase
 		LastSearchWasMatch DefaultParenthesisSpecification
-		LastSearchWasMatchWithRegex LastSearchWasWrapAtEndOfText'
+		LastSearchWasMatchWithRegex LastSearchWasWrapAtEndOfText
+		LastSearchWasReplace LastSearchReplacedString'
 	poolDictionaries:''
 	category:'Views-Text'
 !
@@ -2228,7 +2229,7 @@
      bindings bldr doSearch modal searchVariableHolder selectedVariable searchFullWordHolder
      replaceBooleanEnabledHolder replaceBooleanHolder replaceTextHolder
      replaceAllBooleanHolder
-     searchAtBeginOfLineOnlyHolder|
+     searchAtBeginOfLineOnlyHolder updateReturnKeyBehavior|
 
     searchBarActionBlock notNil ifTrue:[
         self resetVariablesBeforeNewSearch.
@@ -2248,9 +2249,9 @@
     searchVariableHolder := (lastSearchWasVariableSearch ? false) asValue.
     searchFullWordHolder := false asValue.
     searchAtBeginOfLineOnlyHolder := false asValue.
-    replaceBooleanHolder := false asValue.
+    replaceBooleanHolder := (LastSearchWasReplace ? false) asValue.
     replaceAllBooleanHolder := false asValue.
-    replaceTextHolder := '' asValue.
+    replaceTextHolder := (LastSearchReplacedString ? '') asValue.
     replaceBooleanEnabledHolder := self isReadOnly not asValue.
 
     patternHolder := '' asValue.
@@ -2296,6 +2297,9 @@
             LastSearchWasMatch := lastSearchWasMatch := matchHolder value.
             LastSearchWasMatchWithRegex := matchWithRegexHolder value.
             LastSearchWasWrapAtEndOfText := wrapAtEndHolder value.
+            LastSearchWasReplace :=replaceBooleanHolder value.
+            LastSearchReplacedString := replaceTextHolder value.
+            
             pattern := patternHolder value.
             pattern notEmptyOrNil ifTrue:[
                 searchAction := 
@@ -2410,6 +2414,21 @@
     bindings at:#replaceBoolean put:replaceBooleanHolder.
     bindings at:#replaceAllBoolean put:replaceAllBooleanHolder.
     bindings at:#replaceTextHolder put:replaceTextHolder.
+
+    updateReturnKeyBehavior :=
+        [
+            "/ when replacing, do not close box on return    
+            replaceBooleanHolder value ifTrue:[
+                (bldr componentAt:#cancelButton)
+                        label:(resources string:'Close').
+                searchBox window keyboardProcessor returnAction:searchAction.        
+            ] ifFalse:[
+                (bldr componentAt:#cancelButton)
+                        label:(resources string:'Cancel').
+                searchBox window keyboardProcessor returnAction:nil.        
+            ].
+        ].
+    
     replaceBooleanHolder onChangeEvaluate:
         [
             replaceBooleanHolder value ifTrue:[
@@ -2417,7 +2436,9 @@
             ] ifFalse:[
                 (bldr componentAt:#patternComboBox) requestFocus   
             ].
+            updateReturnKeyBehavior value.
         ].
+
     modal ifTrue:[
         searchBox := SimpleDialog new.
     ] ifFalse:[
@@ -2436,6 +2457,7 @@
     (bldr componentAt:#cancelButton) cursor:(Cursor thumbsDown).
 
     modal ifTrue:[
+        updateReturnKeyBehavior value.
         searchBox openDialog.
         searchBox accepted ifTrue:[ doSearch value:fwd ].
     ] ifFalse:[