Skip to content

Commit 4e2ccc1

Browse files
committed
Removed the logic around restoreBaseLocation.
1 parent 8185889 commit 4e2ccc1

File tree

2 files changed

+22
-78
lines changed

2 files changed

+22
-78
lines changed

bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ public class FindReplaceLogic implements IFindReplaceLogic {
5050
private IFindReplaceStatus status;
5151
private IFindReplaceTarget target;
5252
private Point incrementalBaseLocation;
53-
private Point restoreBaseLocation = new Point(0, 0);
5453
private boolean isTargetSupportingRegEx;
5554
private boolean isTargetEditable;
5655
private final Set<SearchOptions> searchOptions = new HashSet<>();
@@ -60,12 +59,6 @@ public class FindReplaceLogic implements IFindReplaceLogic {
6059

6160
@Override
6261
public void setFindString(String findString) {
63-
if (this.findString.isEmpty() && !findString.isEmpty()) {
64-
// User just started a new search after clearing previous search.
65-
if (target != null) {
66-
restoreBaseLocation = target.getSelection();
67-
}
68-
}
6962
this.findString = Objects.requireNonNull(findString);
7063
if (isAvailableAndActive(SearchOptions.INCREMENTAL)) {
7164
performSearch(true);
@@ -352,12 +345,15 @@ private boolean performSearch(boolean updateFromIncrementalBaseLocation) {
352345
* empty.
353346
*/
354347
private void restoreSelectionIfEmpty() {
355-
if (restoreBaseLocation == null) {
348+
if (!isAvailableAndActive(SearchOptions.INCREMENTAL)) {
349+
System.out.println("Incremental mode not active — skipping restore.");
350+
return;
351+
}
352+
if (incrementalBaseLocation == null) {
356353
return;
357354
}
358-
incrementalBaseLocation = restoreBaseLocation;
359355
if (target instanceof IFindReplaceTargetExtension extension) {
360-
extension.setSelection(restoreBaseLocation.x, restoreBaseLocation.y);
356+
extension.setSelection(incrementalBaseLocation.x, incrementalBaseLocation.y);
361357
}
362358
}
363359

tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogicTest.java

Lines changed: 16 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,7 @@ public void testResetIncrementalBaseLocation() {
826826
findReplaceLogic.activate(SearchOptions.FORWARD);
827827
findReplaceLogic.activate(SearchOptions.WRAP);
828828
findReplaceLogic.activate(SearchOptions.INCREMENTAL);
829+
829830
findReplaceLogic.setFindString("test");
830831
assertThat(textViewer.getSelectedRange(), is(new Point(0, 4)));
831832
textViewer.setSelectedRange(5, 0);
@@ -843,77 +844,24 @@ public void testResetIncrementalBaseLocation() {
843844
// Verify that after clearing the search, caret goes back to last active location
844845
findReplaceLogic.setFindString("");
845846
findReplaceLogic.performSearch();
846-
assertThat(textViewer.getSelectedRange(), is(new Point(0, 0)));
847-
}
848-
849-
@Test
850-
public void testRestoreBaseLocationCapturedOnNewSearch() {
851-
String setupString= "alpha beta gamma";
852-
TextViewer textViewer= setupTextViewer(setupString);
853-
textViewer.setSelectedRange(6, 0); // caret after "alpha "
854-
855-
IFindReplaceLogic logic= setupFindReplaceLogicObject(textViewer);
856-
logic.activate(SearchOptions.FORWARD);
857-
logic.activate(SearchOptions.INCREMENTAL);
858-
859-
// Start a new search
860-
logic.setFindString("gamma");
861-
assertThat(textViewer.getSelectedRange(), is(new Point(11, 5))); // found "gamma"
862-
863-
// Now clear the search — caret should return to where it started (6, 0)
864-
logic.setFindString("");
865-
logic.performSearch();
866-
assertThat(textViewer.getSelectedRange(), is(new Point(6, 0)));
867-
}
868-
869-
@Test
870-
public void testCaretRestoredWhenSearchCleared() {
871-
String setupString= "alpha beta gamma";
872-
TextViewer textViewer= setupTextViewer(setupString);
873-
textViewer.setSelectedRange(0, 0);
874-
875-
IFindReplaceLogic logic= setupFindReplaceLogicObject(textViewer);
876-
logic.activate(SearchOptions.FORWARD);
877-
logic.activate(SearchOptions.INCREMENTAL);
878-
879-
logic.setFindString("beta");
880-
assertThat(textViewer.getSelectedRange(), is(new Point(6, 4))); // found "beta"
881-
882-
// Clear the search field — should restore caret
883-
logic.setFindString("");
884-
logic.performSearch();
885-
886-
// Expect caret restored to starting location (0,0)
887-
assertThat(textViewer.getSelectedRange(), is(new Point(0, 0)));
847+
assertThat(textViewer.getSelectedRange(), is(new Point(10, 4)));
888848
}
889849

890850
@Test
891-
public void testRestoreBaseLocationRefreshedBetweenSessions() {
892-
String setupString= "alpha beta gamma";
851+
public void testRestoreSelectionOnEmptyFindStringInIncrementalMode() {
852+
String setupString= "test\ntest\ntest";
893853
TextViewer textViewer= setupTextViewer(setupString);
894-
IFindReplaceLogic logic= setupFindReplaceLogicObject(textViewer);
895-
logic.activate(SearchOptions.FORWARD);
896-
logic.activate(SearchOptions.INCREMENTAL);
854+
textViewer.setSelectedRange(5, 0); // Set initial selection
855+
IFindReplaceLogic findReplaceLogic= setupFindReplaceLogicObject(textViewer);
856+
findReplaceLogic.activate(SearchOptions.FORWARD);
857+
findReplaceLogic.activate(SearchOptions.WRAP);
858+
findReplaceLogic.activate(SearchOptions.INCREMENTAL);
897859

898-
// --- First search session ---
899-
textViewer.setSelectedRange(0, 0);
900-
logic.setFindString("alpha");
901-
assertThat(textViewer.getSelectedRange(), is(new Point(0, 5)));
902-
903-
// Clear the search → caret returns to (0, 0)
904-
logic.setFindString("");
905-
logic.performSearch();
906-
assertThat(textViewer.getSelectedRange(), is(new Point(0, 0)));
907-
908-
// --- Second search session ---
909-
textViewer.setSelectedRange(6, 0);
910-
logic.setFindString("beta");
911-
assertThat(textViewer.getSelectedRange(), is(new Point(6, 4)));
912-
913-
// Clear again → caret returns to (6, 0)
914-
logic.setFindString("");
915-
logic.performSearch();
916-
assertThat(textViewer.getSelectedRange(), is(new Point(6, 0)));
860+
findReplaceLogic.resetIncrementalBaseLocation(); // Set base location
861+
findReplaceLogic.setFindString("test");
862+
assertThat(textViewer.getSelectedRange(), is(new Point(5, 4)));
863+
findReplaceLogic.setFindString(""); // Clear the find string
864+
assertThat(textViewer.getSelectedRange(), is(new Point(5, 0))); // Restored to base location
917865
}
918866

919867
@Test
@@ -928,10 +876,10 @@ public void testNoRestoreOnEmptyFindStringWhenNotIncremental() {
928876

929877
findReplaceLogic.resetIncrementalBaseLocation();
930878
findReplaceLogic.setFindString("test");
931-
assertThat(textViewer.getSelectedRange(), is(new Point(5, 0)));
879+
assertThat(textViewer.getSelectedRange(), is(new Point(5, 0))); // As per pr3379
932880
findReplaceLogic.setFindString(""); // Clear the find string
933881
// Should not restore selection
934-
assertThat(textViewer.getSelectedRange(), is(new Point(5, 0))); // Changes as per pr3379
882+
assertThat(textViewer.getSelectedRange(), is(new Point(5, 0))); // Remains unchanged
935883
}
936884

937885
@Test

0 commit comments

Comments
 (0)