Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 6019)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 6020)
@@ -10,5 +10,4 @@
 import java.awt.Font;
 import java.awt.GridBagLayout;
-import java.awt.KeyboardFocusManager;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
@@ -19,5 +18,4 @@
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -76,4 +74,5 @@
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Shortcut;
 
 
@@ -145,4 +144,6 @@
     private final DialogsPanel dialogsPanel;
 
+    private final boolean unregisterTab;
+    
     /**
      * Default width of the toggle dialog area.
@@ -237,4 +238,10 @@
         statusLine = new MapStatus(this);
         MapView.addLayerChangeListener(this);
+
+        unregisterTab = Shortcut.findShortcut(KeyEvent.VK_TAB, 0)!=null;
+        if (unregisterTab) {
+            for (JComponent c: allDialogButtons) c.setFocusTraversalKeysEnabled(false);
+            for (JComponent c: allMapModeButtons) c.setFocusTraversalKeysEnabled(false);
+        }
     }
 
@@ -404,7 +411,7 @@
             toolBarActions.setInheritsPopupMenu(true);
             sideToolBar.add(toolBarActions);
-        listAllMapModesButton.setAlignmentX(0.5f);
-        listAllMapModesButton.setBorder(null);
-        listAllMapModesButton.setFont(listAllMapModesButton.getFont().deriveFont(Font.PLAIN));
+            listAllMapModesButton.setAlignmentX(0.5f);
+            listAllMapModesButton.setBorder(null);
+            listAllMapModesButton.setFont(listAllMapModesButton.getFont().deriveFont(Font.PLAIN));
             listAllMapModesButton.setInheritsPopupMenu(true);
             sideToolBar.add(listAllMapModesButton);
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 6019)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 6020)
@@ -6,4 +6,5 @@
 import java.awt.AlphaComposite;
 import java.awt.Color;
+
 import java.awt.Dimension;
 import java.awt.Graphics;
@@ -229,4 +230,5 @@
     public MapView(final JPanel contentPane, final ViewportData viewportData) {
         Main.pref.addPreferenceChangeListener(this);
+        final boolean unregisterTab = Shortcut.findShortcut(KeyEvent.VK_TAB, 0)!=null;
 
         addComponentListener(new ComponentAdapter(){
@@ -237,4 +239,5 @@
                 add(zoomSlider);
                 zoomSlider.setBounds(3, 0, 114, 30);
+                zoomSlider.setFocusTraversalKeysEnabled(!unregisterTab);
 
                 MapScaler scaler = new MapScaler(MapView.this);
@@ -277,6 +280,5 @@
         });
 
-        if (Shortcut.findShortcut(KeyEvent.VK_TAB, 0)!=null)
-        {
+        if (Shortcut.findShortcut(KeyEvent.VK_TAB, 0)!=null) {
             setFocusTraversalKeysEnabled(false);
         }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 6019)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 6020)
@@ -1024,4 +1024,5 @@
         control.removeAll();
         buttonActions.clear();
+        boolean unregisterTab = Shortcut.findShortcut(KeyEvent.VK_TAB, 0)!=null;
 
         for (ActionDefinition action : getDefinedActions()) {
@@ -1048,6 +1049,8 @@
                 }
                 b.setInheritsPopupMenu(true);
-            }
-        }
+                b.setFocusTraversalKeysEnabled(!unregisterTab);
+            }
+        }
+        control.setFocusTraversalKeysEnabled(!unregisterTab);
         control.setVisible(control.getComponentCount() != 0);
     }
