<AWT Dev> [9] review request for 8066436: Minimize can cause window to disappear on osx

Nakul Natu nakul.natu at oracle.com
Mon Mar 2 19:18:33 UTC 2015


Please review the fix for JDK 9.

CPlatformWindow set bounds using setBounds() which calls native function 
nativeNSSetWindowBounds() -> calls the OSX function. After that ox 
callbacks to java using deliverMoveresizeEvent() where the peer or 
window associated with native window is notified of change of bounds.

In maximize() we need peer’s bound which are saved as normalBounds to 
use them to unmaximize.

The problem
1. Customer creates window where the size width height is (1, 1)
2. setSize call is made (600,900) which starts the setBounds process 
described earlier
3. setExtendedState(MAXIMIZED) is called which calls maximize(). But the 
callback for deliverMoveresizeEvent() has not yet processed and the the 
bounds we get are earlier (1,1).
4. Window is maximized.
5. Now when we try to unmaximize or iconify the window the size is set 
to (1,1) and we can’t see the window.

Even if we are using the bounds which are available (as the event 
processing is asynchronous) this can cause lot of problems as the window 
just disappears. Adding LWCToolkit.flushNativeSelectors(); just before 
saving the bounds can get us the correct bounds which we are expecting.

Bug : https://bugs.openjdk.java.net/browse/JDK-8066436
Webrev: http://cr.openjdk.java.net/~van/8066436/webrev.00/


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20150302/149f44fe/attachment.html>

More information about the awt-dev mailing list