[
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: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists