On Sat, 28 Oct 2023 07:22:02 GMT, Prasanta Sadhukhan <[email protected]>
wrote:
>> FX Nodes embedded in a Swing JFXPanel does not track the component
>> orientation and FX nodes remain unaffected when component orientation
>> changes.
>> Fix made sure JavaFX scene embedded in a JFXPanel should inherit the value
>> from the JFXPanel.
>
> Prasanta Sadhukhan has updated the pull request incrementally with one
> additional commit since the last revision:
>
> jcheck
I left some comments. This is heading in the right direction, but needs some
adjustments.
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/EmbeddedStage.java
line 284:
> 282: }
> 283:
> 284: NodeOrientation orientation;
Move this to `com.sun.javafx.stage.EmbeddedWindow`.
modules/javafx.graphics/src/main/java/javafx/scene/Scene.java line 6352:
> 6350: parent = ((Stage)window).getOwner();
> 6351: } else if (window instanceof
> com.sun.javafx.embed.EmbeddedSceneInterface) {
> 6352: return
> ((com.sun.javafx.embed.EmbeddedStageInterface)window).getNodeOrientation();
This is the right idea, but the wrong type. The window, which is a
`javafx.scene.Window` will never be an instance of `EmbeddedSceneInterface`
which is a `GlassStage` peer. In the case of `JFXPanel`, the window will be a
`com.sun.javafx.stage.EmbeddedWindow`.
modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java line 818:
> 816: if (!cor.equals(ComponentOrientation.UNKNOWN)) {
> 817: boolean rtl =
> cor.equals(ComponentOrientation.RIGHT_TO_LEFT);
> 818: stagePeer.setNodeOrientation(rtl ?
> NodeOrientation.RIGHT_TO_LEFT :
You should set it on the `stage` not the `stagePeer`.
-------------
PR Review: https://git.openjdk.org/jfx/pull/1271#pullrequestreview-1702836662
PR Review Comment: https://git.openjdk.org/jfx/pull/1271#discussion_r1375313915
PR Review Comment: https://git.openjdk.org/jfx/pull/1271#discussion_r1375303233
PR Review Comment: https://git.openjdk.org/jfx/pull/1271#discussion_r1375306798