On Mon, 2 Aug 2021 20:04:43 GMT, Alexey Ushakov <a...@openjdk.org> wrote:

>> src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java line 199:
>> 
>>> 197: 
>>> 198:         platformWindow.initialize(target, this, ownerDelegate);
>>> 199:         platformWindow.setOpaque(!isTranslucent());
>> 
>> !isTranslucent() uses the opaque flag which will be initialised in the code 
>> below(see setOpaque(getTarget().isOpaque());)
>
> Yes, and we need this call here to initialise content view with correct 
> default value
> CPlatformWindow.java:931 contentView.setWindowLayerOpaque(isOpaque);

I need to look at it closely, I do not understand why we made the native layer 
opaque=NO by default while the java code uses opaque=true by default. And then 
we reset the native code from NO to yes by the code above. Why we cannot make 
both native/java use true/YES and when necessary it will be reset to false/NO 
by the existing code(via LWWindowPeer.setOpaque() and 
LWWindowPeer.updateOpaque?)
BTW Probably implementation of LWWindowPeer.setTextured() should call the 
updateOpaque() as well.

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

PR: https://git.openjdk.java.net/jdk/pull/4946

Reply via email to