<AWT Dev> Replacement for com.apple.eawt.FullScreen*

DRC drc at virtualgl.org
Wed Jul 24 20:53:52 UTC 2019

I looked at the code that supposedly implements the new behavior
(activating full-screen mode with setExtendedState(MAXIMIZED_BOTH).) 
That code appears unchanged in OpenJDK 11 vs. OpenJDK 9, where it was
introduced.  I don't see how the code could possibly duplicate the
functionality of com.apple.eawt.Application.requestToggleFullScreen(). 
The com.apple.eawt.Application.requestToggleFullScreen() method hooks
into CPlatformWindow.toggleFullScreen().  The new code implemented in
JDK-8143914 <https://bugs.openjdk.java.net/browse/JDK-8143914> provides
additional hooks into CPlatformWindow.toggleFullScreen(), but they
appear to be activated only if: 

1. getRootPane().putClientProperty("apple.awt.fullscreenable", false) is
called and the window is already in full-screen mode, or

2. setResizable(false) is called and the window is already in
full-screen mode.

That does not expose the same functionality to applications as
com.apple.eawt.Application.requestToggleFullScreen().  Even if it
did, it could not replace com.apple.eawt.FullScreenListener, which is
needed in order for applications to be notified when full-screen mode is
activated or deactivated.

On 7/22/19 4:58 PM, Sergey Bylokhov wrote:
> Hi, DRC.
> I guess this feature have to be implemented by this CR:
> https://bugs.openjdk.java.net/browse/JDK-8143914
> The idea was to use the sequence of: "setExtendedState() +
> to toggle the "fullscreen" window. And use the client property to
> enable/disable
> this functionality. But it looks like something has changed since
> then, and
> the window does not move to the "fullscreen" when we zoom it.
> Please file a bug for this.
> Interesting that the "fullscreen" works fine if the user clicks on the
> zoom button.
> On 20/07/2019 17:03, DRC wrote:
>> I've been beating my head against the wall about this for quite a while,
>> but I can't figure out how to programmatically toggle "Lion Full-Screen
>> Mode" (i.e. "Full-Screen Mode Using Spaces") on macOS without using the
>> deprecated com.apple.eawt.FullScreen* classes, which are problematic at
>> best when including a custom JRE in my app using jlink.  I looked at the
>> OpenJDK 12 source, and it doesn't appear that the native code to do this
>> toggling has any other touch points besides the
>> com.apple.eawt.FullScreen* classes.  What am I missing?  The problem is
>> that, because I'm writing a remote desktop client, I have to provide
>> users with a way to switch in and out of full-screen mode with a
>> keystroke and menu option, and I also have to be able to detect when the
>> user clicks the full-screen button in the window's titlebar.  I don't
>> know how to do that without invoking
>> com.apple.eawt.FullScreenListener.addFullScreenListenerTo() and
>> com.apple.eawt.Application.requestToggleFullScreen().  Any advice is
>> appreciated.
>> DRC

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/awt-dev/attachments/20190724/bcd98ad5/attachment-0001.html>

More information about the awt-dev mailing list