On Wed, 5 Nov 2025 13:52:00 GMT, Marius Hanl <[email protected]> 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, 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.
>
> modules/javafx.graphics/src/main/java/com/sun/glass/ui/Screen.java line 374:
> 
>> 372:     public static void notifySettingsChanged() {
>> 373:         // Save the old screens in order to dispose them later
>> 374:         List<Screen> oldScreens = new ArrayList<>();
> 
> This could also be a `Set`, which then handles duplicates without the need 
> for `contains`

Done

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1964#discussion_r2500422693

Reply via email to