Index: src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 14424)
+++ src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(working copy)
@@ -63,7 +63,7 @@
         }
 
         this.add(mSpltPane);
-        reconstruct(Action.ELEMENT_SHRINKS, null);
+        reconstruct(Action.RESTORE_SAVED, null);
     }
 
     /**
@@ -126,10 +126,15 @@
          * The panel was collapsed by the user.
          */
         COLLAPSED_TO_DEFAULT,
+        /**
+         * Restore saved heights.
+         */
+        RESTORE_SAVED,
         /*  INVISIBLE_TO_COLLAPSED,    does not happen */
         /**
          * else. (Remaining elements have more space.)
          */
+
         ELEMENT_SHRINKS
     }
 
@@ -186,10 +191,20 @@
         /**
          * 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);
+                if (dlg.isDialogInDefaultView()) {
                     final int ph = dlg.getPreferredHeight();
                     final int ah = dlg.getSize().height;
                     dlg.setPreferredSize(new Dimension(Integer.MAX_VALUE, ah < 20 ? ph : ah));
@@ -236,7 +251,7 @@
             final int hnTrig = hpTrig * s2 / (hpTrig + sumP);
             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: src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 14424)
+++ src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(working copy)
@@ -239,7 +239,7 @@
         setPreferredSize(new Dimension(0, preferredHeight));
         /** 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());
 
         isShowing = Config.getPref().getBoolean(preferencePrefix+".visible", defShow);
@@ -456,6 +456,7 @@
 
     @Override
     public void destroy() {
+        rememberHeight();
         closeDetachedDialog();
         if (isShowing) {
             hideNotify();
@@ -996,4 +997,20 @@
         }
         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() {
+        Logging.debug(preferencePrefix);
+        int h = getHeight();
+        Config.getPref().put(preferencePrefix+".lastHeight", Integer.toString(h));
+    }
 }
