[ 
https://issues.apache.org/jira/browse/NETBEANS-3592?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated NETBEANS-3592:
-------------------------------------
    Labels: HiDPI pull-request-available  (was: HiDPI)

> Fix various Windows LAF bugs on HiDPI screens
> ---------------------------------------------
>
>                 Key: NETBEANS-3592
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-3592
>             Project: NetBeans
>          Issue Type: Improvement
>          Components: platform - Other
>    Affects Versions: 11.1
>         Environment: Windows with HiDPI screens
>            Reporter: Eirik Bakke
>            Priority: Major
>              Labels: HiDPI, pull-request-available
>         Attachments: Problem 1, incorrect font size.png, Problem 2, OS 
> controls wrong size (after patch).png, Problem 2, OS controls wrong size 
> (before patch).png, Problem 3, uneven text component borders.png, 
> WindowsSwingMultiMonitorTest.png
>
>
> Provide workarounds to various bugs that caused the Windows LAF to be 
> unusable on many HiDPI configurations, typically when an external monitor (or 
> projector) is involved, or is disconnected or connected.
> 1) In certain configurations, the GUI font size would be either way too large 
> or way too small. (I can't remember exactly which configurations caused this, 
> but going through the manual test case list below _will_ trigger it several 
> times.)
> 2) In multi-monitor configurations that involve one HiDPI screen and one 
> regular screen, the size of controls drawn by the OS, such as checkboxes and 
> outline expansion handles, will be incorrect unless the HiDPI screen was the 
> main display at login. I earlier reported this as a JDK bug at 
> https://bugs.openjdk.java.net/browse/JDK-8211715 . (Note that there are a few 
> icons which cannot be fixed using the UIDefaults approach taken here, e.g. 
> checkmarks in JCheckBoxMenuItem.) In some cases, the LAF would previously end 
> up scaling the control images received from the OS using a poor image scaling 
> interpolation; the supplied patch improves the scaling quality in these cases.
> 3) On non-integral scaling levels, e.g. 150%, borders around text components 
> will be of uneven thickness due to rounding error. This patch fixes that. 
> This also happens to JComboBox, but in that case cannot be fixed with a 
> simple patch, since that one does not take its border from UIDefaults.
> I will provide a PR with workarounds.
> Below is a manual test plan that I used to test these patches, on Windows 10. 
> After each line in the test plan, the patch is confirmed to work. In _most_ 
> of these cases there is some kind of improvement in behavior from the 
> patch--either a corrected control/font size or at least an improvement in 
> control icon scaling interpolation quality.
> * main display laptop at sign-in (external at 200% HiDPI scaling/main at 100%)
> * change main display to external monitor while running app
> * restart app
> * change 100% to 150% while running app
> * restart app
> * log out and in again
> * change 150% to 100% while running app
> * restart app
> * main display external monitor at sign-in (external 200%/main 100%)
> * change main display to laptop while running app
> * restart app
> * change 100% to 150% while running app
> * restart app
> * log out and in again
> * change 150% to 100% while running app
> * restart app
> * change 200% to 150% while running app
> * restart app
> * main display laptop at sign-in (external 200%/main 100%), then disconnect 
> external before running app
> * reconnect external while running app
> * restart app
> * log out, disconnect external, log in
> * reconnect external while running app
> * restart app
> * disconnect external while running app
> * main display external monitor at sign-in (200%/100%), then disconnect 
> external while running app (forgot an initial step here; initial data pasted 
> in from step 9)
> * reconnect external while running app
> * restart app
> * log out, disconnect external, log in
> * reconnect external while running app
> * restart app
> * main display laptop at sign-in (200%/150%), then disconnect external before 
> running
> * reconnect external while running app
> * log out, disconnect external, log in
> * reconnect external while running app
> * restart app
> * main display external monitor at sign-in (200%/150%), then disconnect 
> external before running
> * reconnect external while running app
> * restart app
> * log out, disconnect external, log in
> * reconnect external while running app
> * restart app
> * main display external at sign-in (external 150%, main 100%)
> * change 100% to 150% while running app
> * restart app
> * change main display to laptop (200%), set external display to 100%, log 
> out, disconnect external, log in, run app
> * reconnect external while running app (will be 100%)
> * close laptop lid (will switch to external display)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to