On Tue, 11 Jul 2023 07:58:07 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> wrote:
>> When the JavaFX scene is set before it is really shown, then the scale >> factors are not properly propagated to the EmbeddedWindow, resulting in >> showing wrong scales. >> Fix is made to update scales to EmbeddedWindow > > Prasanta Sadhukhan has updated the pull request with a new target base due to > a merge or a rebase. The pull request now contains seven commits: > > - Merge branch 'master' of https://git.openjdk.org/jfx into JDK-8274932 > - Merge branch 'master' of https://github.com/openjdk/jfx into JDK-8274932 > - Fix to get correct scale in secondary monitor > - Set stage scale in FX thread > - Set stage scale in FX thread > - Set stage scale in FX thread > - 8274932: Render scales in EmbeddedWindow are not properly updated This is how I understand this works: The `JFXPanel` makes use of an `EmbeddedWindow` that is a subclass of `Window`. This window listens to its `showing` property, and when it becomes visible will call `updateOutputScales`; this will in turn set the (correct?) render scales. Now the above fix seems to 2nd guess this logic, and overrides these values with render scales it gets from Swing/AWT (note that it didn't do this before). So, my questions: - If JFXPanel never called setRenderScale before, was the JFXPanel completely broken when used on monitors that are not set at 100% scale? Did they update correctly when moved between monitors? I get the impression that it sort of worked, except for this edge case. - If it wasn't completely broken, then why is this fix needed? Shouldn't `Window` already detect that it has become visible (with its `showing` listener) and update the render scales using the `updateOutputScales` method? In other words, isn't this a bug that perhaps needs to be fixed in `Window`s detection of when it should be updating the output scales? ------------- PR Comment: https://git.openjdk.org/jfx/pull/1171#issuecomment-1654113576