RFR: 8346281: [Windows] RenderScale doesn't update to HiDPI changes

Andy Goryachev angorya at openjdk.org
Mon Dec 23 21:32:40 UTC 2024


On Mon, 23 Dec 2024 10:51:39 GMT, Jose Pereda <jpereda at openjdk.org> wrote:

> This PR adds the missing native implementation for Windows `GlassWindow::HandleDPIEvent`, to notify the (Java) window when there is a DPI change event, which can happen when the user changes the resolution of the screen (via Settings -> System -> Display -> scale), while the JavaFX application is running.
> 
> When such `WM_DPICHANGED` event happens, `GlassWindow::HandleDPIEvent` notifies the (Java) window, which changes its platform scale via `Window::notifyScaleChanged`, and `GlassScreen::HandleDisplayChange();` is needed too, to update the platform scale of the screen where the window is at as well.
> 
> There are no tests added to this PR, since these would require manual intervention to change the display. In any case, the test case added to the [issue](https://bugs.openjdk.org/browse/JDK-8346281) runs fine now when the app runs on a given screen and the user changes its resolution. 
> 
> There is a follow-up issue after this PR, that might require a more complex fix, for the case where the user changes the resolution of a different screen that is placed before the one that has the application (as location coordinates of the latter depend on the former), because there is no `WM_DPICHANGED` event in this case.

I think the difference between your scenario and mine is that the monkey tester appears on the external monitor instead of the main one.

If I close the monkey tester while it is on the primary laptop screen and restart it, the menu shows up at the right location from the start.

Maybe you can change your test app to open one window on each screen?

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

PR Comment: https://git.openjdk.org/jfx/pull/1668#issuecomment-2560317772


More information about the openjfx-dev mailing list