? java/util/LocaleData.java ? lib/classes.locale ? scripts/classpath.spec Index: gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,v retrieving revision 1.3 diff -u -r1.3 GdkScreenGraphicsDevice.java --- gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java 16 Feb 2005 13:59:03 -0000 1.3 +++ gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java 5 Apr 2005 14:08:09 -0000 @@ -38,6 +38,8 @@ package gnu.java.awt.peer.gtk; +import java.awt.Dimension; +import java.awt.DisplayMode; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; @@ -79,4 +81,35 @@ // FIXME: query X for default configuration return new GdkGraphicsConfiguration(this); } + + + /** + * Returns the current display mode of this device, or null if unknown. + * + * @return the current display mode + * @see #setDisplayMode(DisplayMode) + * @see #getDisplayModes() + * @since 1.4 + */ + public DisplayMode getDisplayMode() + { + // determine display mode + Dimension dim = getToolkit().getScreenSize(); + DisplayMode mode = new DisplayMode(dim.width, dim.height, 0, + DisplayMode.REFRESH_RATE_UNKNOWN); + return mode; + } + + /** + * This device does not yet support fullscreen exclusive mode, so this + * returns false. + * + * @return false + * @since 1.4 + */ + public boolean isFullScreenSupported() + { + return false; + } + } Index: java/awt/GraphicsDevice.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/awt/GraphicsDevice.java,v retrieving revision 1.2 diff -u -r1.2 GraphicsDevice.java --- java/awt/GraphicsDevice.java 16 Feb 2005 10:39:26 -0000 1.2 +++ java/awt/GraphicsDevice.java 5 Apr 2005 14:08:12 -0000 @@ -64,6 +64,12 @@ /** The current full-screen window, or null if there is none. */ private Window full_screen; + /** + * The bounds of the fullscreen window before it has been switched to full + * screen. + */ + private Rectangle fullScreenOldBounds; + /** The current display mode, or null if unknown. */ private DisplayMode mode; @@ -151,9 +157,9 @@ *
* If isFullScreenSupported() returns false, full-screen * exclusive mode is simulated by resizing the window to the size of the - * screen and positioning it at (0,0). - * - * XXX Not yet implemented in Classpath. + * screen and positioning it at (0,0). This is also what this method does. + * If a device supports real fullscreen mode then it should override this + * method as well as #isFullScreenSupported and #getFullScreenWindow. * * @param w the window to toggle * @see #isFullScreenSupported() @@ -164,11 +170,24 @@ */ public synchronized void setFullScreenWindow(Window w) { + // Restore the previous window to normal mode and release the reference. if (full_screen != null) - ; // XXX Restore the previous window to normal mode. - full_screen = w; - // XXX If w != null, make it full-screen. - throw new Error("not implemented"); + { + full_screen.setBounds(fullScreenOldBounds); + } + + full_screen = null; + + // If w != null, make it full-screen. + if (w != null) + { + fullScreenOldBounds = w.getBounds(); + full_screen = w; + DisplayMode dMode = getDisplayMode(); + full_screen.setBounds(0, 0, dMode.getWidth(), dMode.getHeight()); + full_screen.requestFocus(); + full_screen.setLocationRelativeTo(null); + } } /**