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, in a similar way as Java Desktop 
[handles](https://github.com/openjdk/jdk/blob/master/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp#L1418)
 this DPI event.

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.

The change in `Screen:: notifySettingsChanged` is needed in order to prevent 
disposing screens that are not referenced by windows, and only do it when the 
screen instance of a given window does change.

There are no tests added to this PR, since these would require manual 
intervention to change the resolution of 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. It has also been tested that it doesn't have any side effect on 
macOS.

For the case when the app runs on a different display that the one that was 
changed, see https://bugs.openjdk.org/browse/JDK-8371302 and a possible fix 
with https://github.com/openjdk/jfx/pull/1963.

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

Commit messages:
 - Notify window and screen when dpi changes, dispose screens only when windows 
replace them

Changes: https://git.openjdk.org/jfx/pull/1964/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1964&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8346281
  Stats: 28 lines in 2 files changed: 21 ins; 2 del; 5 mod
  Patch: https://git.openjdk.org/jfx/pull/1964.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1964/head:pull/1964

PR: https://git.openjdk.org/jfx/pull/1964

Reply via email to