Ticket #5470: FullscreenToggleAction.java.2.patch
File FullscreenToggleAction.java.2.patch, 3.3 KB (added by , 15 years ago) |
---|
-
src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
3 3 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.awt.Dimension;7 6 import java.awt.Frame; 8 7 import java.awt.GraphicsDevice; 9 8 import java.awt.GraphicsEnvironment; … … 28 27 // Java 6 29 28 private boolean selected; 30 29 private GraphicsDevice gd; 31 private Rectangle prevBounds ;30 private Rectangle prevBounds = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); 32 31 33 32 public FullscreenToggleAction() { 34 33 super( … … 76 75 Main.pref.put("draw.fullscreen", selected); 77 76 notifySelectedState(); 78 77 79 Frame frame = (Frame) Main.parent;80 81 78 List<Window> visibleWindows = new ArrayList<Window>(); 82 visibleWindows.add(frame);83 79 for (Window w : Frame.getWindows()) { 84 if (w.isVisible() && w != frame) {80 if (w.isVisible()) { 85 81 visibleWindows.add(w); 86 82 } 87 83 } 88 84 85 Frame frame = (Frame) Main.parent; 86 frame.dispose(); 87 frame.setUndecorated(selected); 88 89 89 // 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: 91 91 // http://forums.sun.com/thread.jspa?threadID=5351882 92 92 // 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 96 94 String exclusive = Main.pref.get("draw.fullscreen.exclusive-mode", "auto"); 97 95 if ("true".equals(exclusive) || ("auto".equals(exclusive) && !(Main.platform instanceof PlatformHookWindows))) { 98 frame.dispose();99 frame.setUndecorated(selected);100 96 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) { 107 101 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);112 102 } 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); 117 108 } 118 109 } 119 110