Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 4126)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 4127)
@@ -258,5 +258,4 @@
     public IconToggleButton addToggleDialog(final ToggleDialog dlg) {
         final IconToggleButton button = new IconToggleButton(dlg.getToggleAction());
-        toolBarToggle.add(button);
         button.addMouseListener(new PopupMenuLauncher(new JPopupMenu() {
             {
@@ -270,4 +269,5 @@
                     public void actionPerformed(ActionEvent e) {
                         dlg.hideButton();
+                        validateToolBarToggle();
                     }
                 });
@@ -275,4 +275,7 @@
         }));
         dlg.setButton(button);
+        if (button.isVisible()) {
+            toolBarToggle.add(button);
+        }
         allDialogs.add(dlg);
         if (dialogsPanel.initialized) {
@@ -280,4 +283,13 @@
         }
         return button;
+    }
+    
+    public void validateToolBarToggle() {
+        toolBarToggle.removeAll();
+        for (ToggleDialog dlg : allDialogs) {
+            if (dlg.getButton().isVisible()) {
+                toolBarToggle.add(dlg.getButton());
+            }
+        }
     }
 
@@ -381,6 +393,8 @@
                         if ((Boolean) getValue(SELECTED_KEY)) {
                             t.showButton();
+                            validateToolBarToggle();
                         } else {
                             t.hideButton();
+                            validateToolBarToggle();
                         }
                     }
