On Tue, 7 Mar 2023 14:39:29 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> Issue happened during setting a new Scene - updating a new View was done >> while the Window reference it kept was null. This caused it to default >> scaling values to 1.0f (or 100%) while processing a resize notification, >> which for high DPI screens with scaling different than 100% caused UI issues. >> >> Resolved by splitting `_setView()` native call into two parts - first one >> sets the view, then back in JVM side we set a correct Window reference, then >> we trigger the notification. It has to be triggered from native side, >> because Windows backend of Glass sends back new width/height pulled from >> WinAPI `::GetClientRect()` call. >> >> In process of working on this issue I also found another scenario causing >> the same problem - calling `Stage.setScene()` after `Stage.show()`. The >> patch fixed that case as well. >> >> Added a system test which is supposed to check for above issues. I didn't >> limit it to run only on platforms with UI scaling enabled because it also >> serves as a good sanity check in case there are some other changes to code >> that might move/scale the UI unwantingly. I tested this patch both on macOS >> Ventura and Windows 11, with `d9c091f` all tests pass while without >> `d9c091f` on Windows tests `testShowAndSetScene` and `testSecondSetScene` >> fail as expected. > > I'll test and review it. One quick comment: since the newly-added system test > uses Robot, the test class will need to move under the `test.robot` hierarchy > so it will be correctly excluded unless `-PUSE_ROBOT=true`. @kevinrushforth my mistake, should be good now! ------------- PR: https://git.openjdk.org/jfx/pull/1054