Index: trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 3536)
+++ trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 3537)
@@ -4,7 +4,9 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Dimension;
 import java.awt.Frame;
 import java.awt.GraphicsDevice;
 import java.awt.GraphicsEnvironment;
+import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -16,4 +18,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.PlatformHookUnixoid;
+import org.openstreetmap.josm.tools.PlatformHookWindows;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -71,8 +74,27 @@
 
         Frame frame = (Frame)Main.parent;
-        frame.dispose();
-        frame.setUndecorated(selected);
-        gd.setFullScreenWindow(selected ? frame : null);
-        frame.setVisible(true);
+        
+        // we cannot use hw-exclusive fullscreen mode in MS-Win, as long
+        // as josm throws out modal dialogs as well :-), see here:
+        // http://forums.sun.com/thread.jspa?threadID=5351882
+        //
+        // the good thing is: fullscreen works without exclusive mode,
+        // since windows (or java?) draws the undecorated window full-
+        // screen by default (it's a simulated mode, but should be ok)
+        String exclusive = Main.pref.get("draw.fullscreen.exclusive-mode", "auto");
+        if ("yes".equals(exclusive) || ("auto".equals(exclusive) && !(Main.platform instanceof PlatformHookWindows))) {
+            frame.dispose();
+            frame.setUndecorated(selected);
+            gd.setFullScreenWindow(selected ? frame : null);
+            frame.setVisible(true);
+        } else {
+            frame.dispose();
+            if (Main.pref.getBoolean("draw.fullscreen.set-screen-bounds", true)) {
+                Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
+                frame.setBounds(0, 0, dim.width, dim.height);
+            }
+            frame.setUndecorated(selected);
+            frame.setVisible(true);
+        }
     }
 
