Index: /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 5077)
+++ /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 5078)
@@ -17,7 +17,9 @@
 
 import javax.swing.ButtonModel;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.KeyStroke;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.PlatformHookUnixoid;
 import org.openstreetmap.josm.tools.PlatformHookWindows;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -25,7 +27,4 @@
 public class FullscreenToggleAction extends JosmAction {
     private final List<ButtonModel> buttonModels = new ArrayList<ButtonModel>();
-    //FIXME: replace with property Action.SELECTED_KEY when migrating to
-    // Java 6
-    private boolean selected;
     private GraphicsDevice gd;
     private Rectangle prevBounds;
@@ -43,5 +42,5 @@
         Main.toolbar.register(this);
         gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
-        selected = Main.pref.getBoolean("draw.fullscreen", false);
+        putValue(SELECTED_KEY, Main.pref.getBoolean("draw.fullscreen", false));
         notifySelectedState();
     }
@@ -61,6 +60,6 @@
     protected void notifySelectedState() {
         for (ButtonModel model: buttonModels) {
-            if (model.isSelected() != selected) {
-                model.setSelected(selected);
+            if (model.isSelected() != isSelected()) {
+                model.setSelected(isSelected());
             }
         }
@@ -68,6 +67,6 @@
 
     protected void toggleSelectedState() {
-        selected = !selected;
-        Main.pref.put("draw.fullscreen", selected);
+        putValue(SELECTED_KEY, !isSelected());
+        Main.pref.put("draw.fullscreen", isSelected());
         notifySelectedState();
         setMode();
@@ -75,10 +74,11 @@
 
     public void initial() {
-        if(selected)
+        if (isSelected()) {
             setMode();
+        }
     }
 
     protected void setMode() {
-        Frame frame = (Frame) Main.parent;
+        JFrame frame = (JFrame) Main.parent;
 
         List<Window> visibleWindows = new ArrayList<Window>();
@@ -91,7 +91,7 @@
 
         frame.dispose();
-        frame.setUndecorated(selected);
+        frame.setUndecorated(isSelected());
 
-        if (selected) {
+        if (isSelected()) {
             prevBounds = frame.getBounds();
             frame.setBounds(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
@@ -100,5 +100,5 @@
         // we cannot use hw-exclusive fullscreen mode in MS-Win, as long
         // as josm throws out modal dialogs, see here:
-        // http://forums.sun.com/thread.jspa?threadID=5351882
+        // http://forums.sun.com/thread.jspa?threadID=5351882 FIXME this url does not work anymore
         //
         // the good thing is: fullscreen works without exclusive mode,
@@ -107,8 +107,8 @@
         String exclusive = Main.pref.get("draw.fullscreen.exclusive-mode", "auto");
         if ("true".equals(exclusive) || ("auto".equals(exclusive) && !(Main.platform instanceof PlatformHookWindows))) {
-            gd.setFullScreenWindow(selected ? frame : null);
+            gd.setFullScreenWindow(isSelected() ? frame : null);
         }
 
-        if (!selected && prevBounds != null) {
+        if (!isSelected() && prevBounds != null) {
             frame.setBounds(prevBounds);
         }
@@ -117,4 +117,7 @@
             wind.setVisible(true);
         }
+        
+        // Free F10 key to allow it to be used by plugins, even after full screen (see #7502)
+        frame.getJMenuBar().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0), "none"); 
     }
 
@@ -122,3 +125,7 @@
         toggleSelectedState();
     }
+    
+    public final boolean isSelected() {
+        return (Boolean)getValue(SELECTED_KEY);
+    }
 }
