Index: src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 4013)
+++ src/org/openstreetmap/josm/actions/search/SearchAction.java	(working copy)
@@ -135,7 +135,7 @@
         }
         // -- 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);
         hcbSearchString.getEditor().selectAll();
@@ -164,9 +164,10 @@
         allElements.setToolTipText(tr("Also include incomplete and deleted objects in search."));
         final JCheckBox regexSearch   = new JCheckBox(tr("regular expression"), initialValues.regexSearch);
 
+        JPanel top = new JPanel(new GridBagLayout());
+        top.add(label, GBC.std());
+        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());
         left.add(remove, GBC.eol());
@@ -211,9 +212,10 @@
         description.setFont(description.getFont().deriveFont(Font.PLAIN));
         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));
+        p.add(left, GBC.std());
+        p.add(right, GBC.eol());
         ExtendedDialog dialog = new ExtendedDialog(
                 Main.parent,
                 initialValues instanceof Filter ? tr("Filter") : tr("Search"),
Index: src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 4013)
+++ src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(working copy)
@@ -2,6 +2,8 @@
 package org.openstreetmap.josm.gui.tagging.ac;
 
 import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Toolkit;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 import java.util.Collection;
@@ -144,6 +146,8 @@
                     }
                 }
         );
+        int maxsize=Math.max(getMaximumRowCount(),java.awt.Toolkit.getDefaultToolkit().getScreenSize().height/getPreferredSize().height);
+        setMaximumRowCount(maxsize);
     }
 
     /**
@@ -253,4 +257,7 @@
             return this;
         }
     }
+
+
+
 }
Index: src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(revision 4013)
+++ src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(working copy)
@@ -6,12 +6,16 @@
 import javax.swing.text.JTextComponent;
 
 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);
     }
 
