On Mon, 23 Dec 2024 10:51:39 GMT, Jose Pereda <jper...@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