Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 4017)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 4018)
@@ -43,5 +43,5 @@
 public class SearchAction extends JosmAction implements ParameterizedAction {
 
-    public static final int DEFAULT_SEARCH_HISTORY_SIZE = 10;
+    public static final int DEFAULT_SEARCH_HISTORY_SIZE = 15;
 
     private static final String SEARCH_EXPRESSION = "searchExpression";
@@ -136,5 +136,5 @@
         // -- prepare the combo box with the search expressions
         //
-        JLabel label = new JLabel( initialValues instanceof Filter ? tr("Please enter a filter string.") : tr("Please enter a search string."));
+        JLabel label = new JLabel( initialValues instanceof Filter ? tr("Filter string:") : tr("Search string:"));
         final HistoryComboBox hcbSearchString = new HistoryComboBox();
         hcbSearchString.setText(initialValues.text);
@@ -165,7 +165,8 @@
         final JCheckBox regexSearch   = new JCheckBox(tr("regular expression"), initialValues.regexSearch);
 
+        JPanel top = new JPanel(new GridBagLayout());
+        top.add(label, GBC.std().insets(0, 0, 5, 0));
+        top.add(hcbSearchString, GBC.eol().fill(GBC.HORIZONTAL));
         JPanel left = new JPanel(new GridBagLayout());
-        left.add(label, GBC.eop());
-        left.add(hcbSearchString, GBC.eop().fill(GBC.HORIZONTAL));
         left.add(replace, GBC.eol());
         left.add(add, GBC.eol());
@@ -212,7 +213,8 @@
         right.add(description);
 
-        final JPanel p = new JPanel();
-        p.add(left);
-        p.add(right);
+        final JPanel p = new JPanel(new GridBagLayout());
+        p.add(top, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 5, 5, 0));
+        p.add(left, GBC.std().anchor(GBC.NORTH).insets(5, 10, 10, 0));
+        p.add(right, GBC.eol());
         ExtendedDialog dialog = new ExtendedDialog(
                 Main.parent,
Index: trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 4017)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 4018)
@@ -145,4 +145,6 @@
                 }
         );
+        int maxsize=Math.max(getMaximumRowCount(),java.awt.Toolkit.getDefaultToolkit().getScreenSize().height/getPreferredSize().height - 1);
+        setMaximumRowCount(maxsize);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(revision 4017)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(revision 4018)
@@ -7,10 +7,14 @@
 
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
+import org.openstreetmap.josm.Main;
 
 public class HistoryComboBox extends AutoCompletingComboBox {
     private ComboBoxHistory model;
 
+    public static final int DEFAULT_SEARCH_HISTORY_SIZE = 15;
+
     public HistoryComboBox() {
-        setModel(model = new ComboBoxHistory(15));
+        int maxsize = Main.pref.getInteger("search.history-size", DEFAULT_SEARCH_HISTORY_SIZE);
+        setModel(model = new ComboBoxHistory(maxsize));
         setEditable(true);
     }
