src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java
changeset 59175 d2123a27cfe7
parent 58599 a9b346a481d7
--- a/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java	Wed Oct 30 13:47:49 2019 -0700
+++ b/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java	Thu Oct 24 14:54:31 2019 -0700
@@ -33,11 +33,14 @@
 import java.awt.Rectangle;
 import java.awt.Window;
 import java.awt.geom.Rectangle2D;
+import java.awt.peer.WindowPeer;
 import java.util.Objects;
 
 import sun.java2d.SunGraphicsEnvironment;
 import sun.java2d.opengl.CGLGraphicsConfig;
 
+import static java.awt.peer.ComponentPeer.SET_BOUNDS;
+
 public final class CGraphicsDevice extends GraphicsDevice
         implements DisplayChangedListener {
 
@@ -129,6 +132,7 @@
     }
 
     public void invalidate(final int defaultDisplayID) {
+        //TODO do we need to restore the full-screen window/modes on old device?
         displayID = defaultDisplayID;
     }
 
@@ -138,7 +142,8 @@
         yResolution = nativeGetYResolution(displayID);
         bounds = nativeGetBounds(displayID).getBounds(); //does integer rounding
         initScaleFactor();
-        //TODO configs/fullscreenWindow/modes?
+        resizeFSWindow(getFullScreenWindow(), bounds);
+        //TODO configs?
     }
 
     @Override
@@ -217,6 +222,18 @@
         }
     }
 
+    /**
+     * Reapplies the size of this device to the full-screen window.
+     */
+    private static void resizeFSWindow(final Window w, final Rectangle b) {
+        if (w != null) {
+            WindowPeer peer = AWTAccessor.getComponentAccessor().getPeer(w);
+            if (peer != null) {
+                peer.setBounds(b.x, b.y, b.width, b.height, SET_BOUNDS);
+            }
+        }
+    }
+
     @Override
     public boolean isDisplayChangeSupported() {
         return true;
@@ -229,10 +246,7 @@
         }
         if (!Objects.equals(dm, getDisplayMode())) {
             nativeSetDisplayMode(displayID, dm.getWidth(), dm.getHeight(),
-                    dm.getBitDepth(), dm.getRefreshRate());
-            if (isFullScreenSupported() && getFullScreenWindow() != null) {
-                getFullScreenWindow().setSize(dm.getWidth(), dm.getHeight());
-            }
+                                 dm.getBitDepth(), dm.getRefreshRate());
         }
     }