Index: /trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 6326)
+++ /trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 6327)
@@ -40,5 +40,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        toggleSelectedState();
+        toggleSelectedState(e);
         notifySelectedState();
         if (isSelected()) {
Index: /trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(revision 6326)
+++ /trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(revision 6327)
@@ -38,5 +38,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        toggleSelectedState();
+        toggleSelectedState(e);
         Main.pref.put("draw.dialogspanel", isSelected());
         notifySelectedState();
Index: /trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java	(revision 6326)
+++ /trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java	(revision 6327)
@@ -140,5 +140,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        toggleSelectedState();
+        toggleSelectedState(e);
         Main.pref.put("expert", isSelected());
         notifySelectedState();
Index: /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 6326)
+++ /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 6327)
@@ -52,5 +52,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        toggleSelectedState();
+        toggleSelectedState(e);
         Main.pref.put("draw.fullscreen", isSelected());
         notifySelectedState();
Index: /trunk/src/org/openstreetmap/josm/actions/ToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ToggleAction.java	(revision 6326)
+++ /trunk/src/org/openstreetmap/josm/actions/ToggleAction.java	(revision 6327)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.actions;
 
+import java.awt.event.ActionEvent;
 import java.util.ArrayList;
 import java.util.List;
@@ -7,4 +8,9 @@
 import javax.swing.ButtonModel;
 import javax.swing.Icon;
+import javax.swing.JCheckBox;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JRadioButton;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JToggleButton;
 
 import org.openstreetmap.josm.tools.Shortcut;
@@ -101,6 +107,20 @@
     }
 
-    protected final void toggleSelectedState() {
-        setSelected(!isSelected());
+    /**
+     * Toggles the selcted action state, if needed according to the ActionEvent that trigerred the action.
+     * This method will do nothing if the action event comes from a Swing component supporting the SELECTED_KEY property because the component already set the selected state.
+     * This method needs to be called especially if the action is associated with a keyboard shortcut to ensure correct selected state.
+     * @see <a href="https://weblogs.java.net/blog/zixle/archive/2005/11/changes_to_acti.html">Changes to Actions in 1.6</a>
+     * @see <a href="http://docs.oracle.com/javase/6/docs/api/javax/swing/Action.html">Interface Action</a>
+     */
+    protected final void toggleSelectedState(ActionEvent e) {
+        if (e == null || !(e.getSource() instanceof JToggleButton || 
+                           e.getSource() instanceof JCheckBox || 
+                           e.getSource() instanceof JRadioButton || 
+                           e.getSource() instanceof JCheckBoxMenuItem || 
+                           e.getSource() instanceof JRadioButtonMenuItem 
+                           )) {
+            setSelected(!isSelected());
+        }
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java	(revision 6326)
+++ /trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java	(revision 6327)
@@ -35,5 +35,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        toggleSelectedState();
+        toggleSelectedState(e);
         Main.map.mapView.viewportFollowing = isSelected();
         notifySelectedState();
Index: /trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java	(revision 6326)
+++ /trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java	(revision 6327)
@@ -42,5 +42,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        toggleSelectedState();
+        toggleSelectedState(e);
         if (isSelected()) {
             MapRendererFactory.getInstance().activate(WireframeMapRenderer.class);
