diff options
3 files changed, 16 insertions, 17 deletions
diff --git a/org.eclipse.search/new search/org/eclipse/search2/internal/ui/InternalSearchUI.java b/org.eclipse.search/new search/org/eclipse/search2/internal/ui/InternalSearchUI.java index 64bf7bc0f48..55acc1ee8a9 100644 --- a/org.eclipse.search/new search/org/eclipse/search2/internal/ui/InternalSearchUI.java +++ b/org.eclipse.search/new search/org/eclipse/search2/internal/ui/InternalSearchUI.java @@ -301,13 +301,13 @@ public class InternalSearchUI { } public void addQuery(ISearchQuery query) { - int historyLimit= SearchPreferencePage.getHistoryLimit(); + int historyLimit= SearchPreferencePage.getHistoryLimit(); // guaranteed to be > 0 QueryManager searchManager= getSearchManager(); - while (searchManager.getQueries().length >= historyLimit) { - ISearchQuery oldestQuery= searchManager.getOldestQuery(); - if (oldestQuery != null) - removeQuery(oldestQuery); + ISearchQuery[] queries= searchManager.getQueries(); + + for (int i= historyLimit - 1; i < queries.length; i++) { + removeQuery(queries[i]); } searchManager.addQuery(query); } diff --git a/org.eclipse.search/new search/org/eclipse/search2/internal/ui/QueryManager.java b/org.eclipse.search/new search/org/eclipse/search2/internal/ui/QueryManager.java index cfca906ae4f..80e71853c48 100644 --- a/org.eclipse.search/new search/org/eclipse/search2/internal/ui/QueryManager.java +++ b/org.eclipse.search/new search/org/eclipse/search2/internal/ui/QueryManager.java @@ -31,13 +31,15 @@ class QueryManager { fLRU= new ArrayList(); } - synchronized boolean hasQueries() { + boolean hasQueries() { return !fQueries.isEmpty(); } - synchronized ISearchQuery[] getQueries() { - ISearchQuery[] result= new ISearchQuery[fQueries.size()]; - return (ISearchQuery[]) fQueries.toArray(result); + ISearchQuery[] getQueries() { + synchronized (fQueries) { + ISearchQuery[] result= new ISearchQuery[fQueries.size()]; + return (ISearchQuery[]) fQueries.toArray(result); + } } void removeQuery(ISearchQuery query) { @@ -146,11 +148,4 @@ class QueryManager { fLRU.add(0, query); } } - - ISearchQuery getOldestQuery() { - if (fLRU.size() > 0) - return (ISearchQuery) fLRU.get(fLRU.size()-1); - return null; - } - } diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java index a8a17c6445d..e6fba411d89 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java @@ -360,7 +360,11 @@ public class SearchPreferencePage extends FieldEditorPreferencePage implements I public static int getHistoryLimit() { IPreferenceStore store= SearchPlugin.getDefault().getPreferenceStore(); - return store.getInt(LIMIT_HISTORY); + int limit= store.getInt(LIMIT_HISTORY); + if (limit > 0) { + return limit; + } + return 10; // default } } |