Index: src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 3543)
+++ src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(working copy)
@@ -3,7 +3,6 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Dimension;
 import java.awt.Frame;
 import java.awt.GraphicsDevice;
 import java.awt.GraphicsEnvironment;
@@ -28,7 +27,7 @@
     // Java 6
     private boolean selected;
     private GraphicsDevice gd;
-    private Rectangle prevBounds;
+    private Rectangle prevBounds = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
 
     public FullscreenToggleAction() {
         super(
@@ -76,44 +75,36 @@
         Main.pref.put("draw.fullscreen", selected);
         notifySelectedState();
 
-        Frame frame = (Frame) Main.parent;
-
         List<Window> visibleWindows = new ArrayList<Window>();
-        visibleWindows.add(frame);
         for (Window w : Frame.getWindows()) {
-            if (w.isVisible() && w != frame) {
+            if (w.isVisible()) {
                 visibleWindows.add(w);
             }
         }
-        
+
+        Frame frame = (Frame) Main.parent;
+        frame.dispose();
+        frame.setUndecorated(selected);
+
         // we cannot use hw-exclusive fullscreen mode in MS-Win, as long
-        // as josm throws out modal dialogs as well :-), see here:
+        // as josm throws out modal dialogs.  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)
+        // use draw.fullscreen.exclusive-mode=true to force it using Preferences
         String exclusive = Main.pref.get("draw.fullscreen.exclusive-mode", "auto");
         if ("true".equals(exclusive) || ("auto".equals(exclusive) && !(Main.platform instanceof PlatformHookWindows))) {
-            frame.dispose();
-            frame.setUndecorated(selected);
             gd.setFullScreenWindow(selected ? frame : null);
-            for (Window wind : visibleWindows) {
-                wind.setVisible(true);
-            }
-        } else {
-            frame.dispose();
-            if (Main.pref.getBoolean("draw.fullscreen.set-screen-bounds", true) && selected) {
+        }
+
+        if (Main.pref.getBoolean("draw.fullscreen.set-screen-bounds", true)) {
+            if (selected) {
                 prevBounds = frame.getBounds();
-                Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
-                frame.setBounds(0, 0, dim.width, dim.height);
-            } else if (prevBounds != null) {
-                frame.setBounds(prevBounds);
             }
-            frame.setUndecorated(selected);
-            for (Window wind : visibleWindows) {
-                wind.setVisible(true);
-            }
+            frame.setBounds(selected ? new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) : prevBounds);
+        }
+
+        for (Window w : visibleWindows) {
+            w.setVisible(true);
         }
     }
 
