On Mon, 23 Aug 2021 17:57:45 GMT, Alexey Ushakov <[email protected]> wrote:
>> Update opacity only if the component is visible
>
> Alexey Ushakov has updated the pull request incrementally with one additional
> commit since the last revision:
>
> 8272481: [macos] javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java
> fails
>
> Update window layer opacity to align with the peer translucency
src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java line 70:
> 68: if (peer.isTranslucent()) {
> 69: this.windowLayer.setOpaque(false);
> 70: }
Do we still need the " if (isVisible())" check in the LWWindowPeer.java?
I would like to double-check the reason we need the code above:
* All our opaque properties are true by default(this is the properties used
inside isTranslucent() method)
* If any of the properties are actually set to false by the user, then we will
reset the property of the layer to NO
* The shape property will trigger:
LWWindowPeer->applyShapeImpl->updateOpaque->getPlatformWindow().setOpaque(!isTranslucent());
* The opaque property will trigger:
LWWindowPeer->setOpaque->updateOpaque->getPlatformWindow().setOpaque(!isTranslucent());
And the only problematic property is textured:
* During initialisation we call "peer.setTextured" from the
getInitialStyleBits(), this is before we call contentView.initialize inside
CPlatformWindow.initialize(). I think we should move the call
"peer.setTextured" to the CPlatformWindow.java:337 after
contentView.initialize() This is same as DECORATED property is used in the same
method.
* If the textured property is changed after initialisation we did not update
the "java" textuted property. See ClientPropertyApplicator:
new Property<CPlatformWindow>(WINDOW_BRUSH_METAL_LOOK) { public void
applyProperty(final CPlatformWindow c, final Object value) {
c.setStyleBits(TEXTURED, Boolean.parseBoolean(value.toString()));
}},
-------------
PR: https://git.openjdk.java.net/jdk/pull/5172