On Wed, 1 Oct 2025 04:05:59 GMT, Michael Strauß <[email protected]> wrote:

>> When an extended stage is shown with RTL orientation (either using a RTL 
>> window + `Scene.nodeOrientation == INHERIT`, or using a LTR window and 
>> `Scene.nodeOrientation == RIGHT_TO_LEFT`), the default window buttons are 
>> placed on the wrong side of the window. This bug only manifests on Windows 
>> and Linux, both of which use `HeaderButtonOverlay` to render the default 
>> window buttons.
>> 
>> `HeaderButtonOverlay` is not a part of the scene graph, it is shown on top 
>> of the scene graph as an overlay (like the warning overlay that appears when 
>> entering full-screen mode). For [CSS-related 
>> reasons](https://github.com/openjdk/jfx/pull/1605#issuecomment-2967977276), 
>> the parent of an overlay is the scene root (but the scene root doesn't know 
>> that). This implementation detail can mess up the calculation of orientation 
>> flags and mirroring transforms in `Node`, as depending on the 
>> `NodeOrientation` of the root node, the code may mistakenly mirror (or not 
>> mirror) the orientation.
>> 
>> The solution I've come up with is as follows: the overlay node is marked 
>> with the `Node.INHERIT_ORIENTATION_FROM_SCENE` flag, which causes it to 
>> resolve its effective orientation against the scene only, and never against 
>> the root node. With this change, the effective orientation and mirroring 
>> transforms are computed correctly.
>> 
>> The easiest way to test this fix is with Monkey Tester -> Tools -> Stage 
>> Tester.
>
> Michael Strauß has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   rename field

LGTM

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

Marked as reviewed by zelmidaoui (Author).

PR Review: https://git.openjdk.org/jfx/pull/1921#pullrequestreview-3290246051

Reply via email to