Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 14424)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 14425)
@@ -64,5 +64,5 @@
 
         this.add(mSpltPane);
-        reconstruct(Action.ELEMENT_SHRINKS, null);
+        reconstruct(Action.RESTORE_SAVED, null);
     }
 
@@ -127,4 +127,8 @@
          */
         COLLAPSED_TO_DEFAULT,
+        /**
+         * Restore saved heights.
+         */
+        RESTORE_SAVED,
         /*  INVISIBLE_TO_COLLAPSED,    does not happen */
         /**
@@ -187,5 +191,15 @@
          * Determine the panel geometry
          */
-        if (action == Action.ELEMENT_SHRINKS) {
+        if (action == Action.RESTORE_SAVED) {
+            for (int i = 0; i < n; ++i) {
+                final ToggleDialog dlg = allDialogs.get(i);
+                if (dlg.isDialogInDefaultView()) {
+                    final int ph = dlg.getLastHeight();
+                    final int ah = dlg.getSize().height;
+                    dlg.setPreferredSize(new Dimension(Integer.MAX_VALUE, ah < 20 ? ph : ah));
+                }
+            }
+
+        } else if (action == Action.ELEMENT_SHRINKS) {
             for (int i = 0; i < n; ++i) {
                 final ToggleDialog dlg = allDialogs.get(i);
@@ -237,5 +251,5 @@
             triggeredBy.setPreferredSize(new Dimension(Integer.MAX_VALUE, hnTrig));
 
-            /** This is remainig for the other default view dialogs */
+            /** This is remaining for the other default view dialogs */
             final int r = s2 - hnTrig;
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 14424)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 14425)
@@ -240,5 +240,5 @@
         /** Override any minimum sizes of child elements so the user can resize freely */
         setMinimumSize(new Dimension(0, 0));
-        this.preferredHeight = preferredHeight;
+        this.preferredHeight = Config.getPref().getInt(preferencePrefix+".preferredHeight", preferredHeight);
         toggleAction = new ToggleDialogAction(name, "dialogs/"+iconName, tooltip, shortcut, helpTopic());
 
@@ -457,4 +457,5 @@
     @Override
     public void destroy() {
+        rememberHeight();
         closeDetachedDialog();
         if (isShowing) {
@@ -997,3 +998,18 @@
         stateChanged();
     }
+
+    /**
+     * @return the last used height stored in preferences or preferredHeight
+     */
+    public int getLastHeight() {
+        return Config.getPref().getInt(preferencePrefix+".lastHeight", preferredHeight);
+    }
+
+    /**
+     * Store the current height in preferences so that we can restore it.
+     */
+    public void rememberHeight() {
+        int h = getHeight();
+        Config.getPref().put(preferencePrefix+".lastHeight", Integer.toString(h));
+    }
 }
