Ticket #5470: FullscreenToggleAction.java.2.patch

File FullscreenToggleAction.java.2.patch, 3.3 KB (added by cmuelle8, 15 years ago)

prevBounds assignment was erroneously missing in the last patch..

  • src/org/openstreetmap/josm/actions/FullscreenToggleAction.java

     
    33
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55
    6 import java.awt.Dimension;
    76import java.awt.Frame;
    87import java.awt.GraphicsDevice;
    98import java.awt.GraphicsEnvironment;
     
    2827    // Java 6
    2928    private boolean selected;
    3029    private GraphicsDevice gd;
    31     private Rectangle prevBounds;
     30    private Rectangle prevBounds = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
    3231
    3332    public FullscreenToggleAction() {
    3433        super(
     
    7675        Main.pref.put("draw.fullscreen", selected);
    7776        notifySelectedState();
    7877
    79         Frame frame = (Frame) Main.parent;
    80 
    8178        List<Window> visibleWindows = new ArrayList<Window>();
    82         visibleWindows.add(frame);
    8379        for (Window w : Frame.getWindows()) {
    84             if (w.isVisible() && w != frame) {
     80            if (w.isVisible()) {
    8581                visibleWindows.add(w);
    8682            }
    8783        }
    88        
     84
     85        Frame frame = (Frame) Main.parent;
     86        frame.dispose();
     87        frame.setUndecorated(selected);
     88
    8989        // we cannot use hw-exclusive fullscreen mode in MS-Win, as long
    90         // as josm throws out modal dialogs as well :-), see here:
     90        // as josm throws out modal dialogs. see here:
    9191        // http://forums.sun.com/thread.jspa?threadID=5351882
    9292        //
    93         // the good thing is: fullscreen works without exclusive mode,
    94         // since windows (or java?) draws the undecorated window full-
    95         // screen by default (it's a simulated mode, but should be ok)
     93        // use draw.fullscreen.exclusive-mode=true to force it using Preferences
    9694        String exclusive = Main.pref.get("draw.fullscreen.exclusive-mode", "auto");
    9795        if ("true".equals(exclusive) || ("auto".equals(exclusive) && !(Main.platform instanceof PlatformHookWindows))) {
    98             frame.dispose();
    99             frame.setUndecorated(selected);
    10096            gd.setFullScreenWindow(selected ? frame : null);
    101             for (Window wind : visibleWindows) {
    102                 wind.setVisible(true);
    103             }
    104         } else {
    105             frame.dispose();
    106             if (Main.pref.getBoolean("draw.fullscreen.set-screen-bounds", true) && selected) {
     97        }
     98
     99        if (Main.pref.getBoolean("draw.fullscreen.set-screen-bounds", true)) {
     100            if (selected) {
    107101                prevBounds = frame.getBounds();
    108                 Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    109                 frame.setBounds(0, 0, dim.width, dim.height);
    110             } else if (prevBounds != null) {
    111                 frame.setBounds(prevBounds);
    112102            }
    113             frame.setUndecorated(selected);
    114             for (Window wind : visibleWindows) {
    115                 wind.setVisible(true);
    116             }
     103            frame.setBounds(selected ? new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) : prevBounds);
     104        }
     105
     106        for (Window w : visibleWindows) {
     107            w.setVisible(true);
    117108        }
    118109    }
    119110