When a window is visible the maximized, iconified, and fullscreen properties 
are two-way streets; changes made in Java are sent on to the platform window 
and changes in the platform window are sent back into Java.

When a window is hidden these properties (and others, like location and sizing 
information) are not sent on to the platform window until the window is made 
visible. In other words, the properties don't reflect the actual state of the 
window but the intended state after it's shown.

There's a period when the window is transitioning from hidden to shown where 
the core Stage code is using the stored properties to configure the platform 
window and the platform window is simultaneously calling back in to update the 
properties. This was causing the intended state to be wiped out before it could 
be sent on to the platform window.

The problem is specific to Mac because on that platform any change to the size 
or location of a window can cause it to enter or leave the maximized (zoomed) 
state. So just setting the location can cause the maximized flag to be altered.

The proposed solution is to copy the intended state bits to Stage local 
variables to be used later in the configuration.

-------------

Commit messages:
 - Stages on Mac now honor iconified and maximized flags set while the window 
is hidden.

Changes: https://git.openjdk.org/jfx/pull/1258/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1258&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8316419
  Stats: 19 lines in 2 files changed: 10 ins; 6 del; 3 mod
  Patch: https://git.openjdk.org/jfx/pull/1258.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1258/head:pull/1258

PR: https://git.openjdk.org/jfx/pull/1258

Reply via email to