On Wed, 27 Apr 2022 04:36:27 GMT, Harshitha Onkar <d...@openjdk.java.net> wrote:
>> Previously while tabbing through the JTable cell, the cell highlighter/focus >> ring was not visible against the selection background. >> >> Changes are made to Aqua LAF to derive a lighter focus ring color by >> changing saturation and setting brightness component to 100% of original >> focus ring color so that it is visible while tabbing through `JTable` cells. >> A new method is added for this purpose which takes in `focusRingColor`, does >> adjustment to saturation and brightness and returns a new focus ring color. >> There are edge cases where the HSB transformation does not yield the right >> focus ring color, for these cases a default color is returned. >> >> A test case is added to compare the RGB difference between the original >> focus ring color & selection background and the new focus ring color & >> selection background. A note on the test case, since the test case is >> automated it tests the cell focus ring with colors loaded during the start >> of program execution and any on-the-fly accent color changes were tested >> manually. >> >> **Edge Cases** >>  >> >> The edge case condition consists of two parts – >> >> - To handle white/black colors - (hsbValues[0] == 0 && hsbValues[1] == 0) - >> representing hue and saturation of zero obtained for black, white or exactly >> grey (red=green=color) conditions >> >> >> - To handle grayish colors - hsbValues[1] <= satGrayScale where satGrayScale >> <= 0.10 . For any given hue and brightness, a saturation of less than or >> equal to 10% represents grayish tint colors. (The second case was added to >> accommodate grayish focus ring color returned by system when Accent color = >> Graphite. The returned color is not exactly gray but grayish (r=135, g=135, >> b=140)). To accommodate a more generic case of grayish colors, the >> satGrayScale has a threshold or tolerance of 0.10 or 10%. >> >> Used the following resources to test out different grayish colors and >> optimal saturation offsets used in `deriveLighterFocusRing()`. >> >> - [RapidTables](https://www.rapidtables.com/convert/color/rgb-to-hsl.html) >> - [Colorizer](http://colorizer.org/). >> - [Chart Link](https://codepen.io/HunorMarton/details/eWvewo) >> >> **A note on the system-colors:** >> >> _For Mac 10.14 below:_ >> [keyboardfocusindicatorcolor](https://developer.apple.com/documentation/appkit/nscolor/1532031-keyboardfocusindicatorcolor) >> Issue: Works well for most of the scenarios (including on-the-fly changes) >> and follows the accent color changes except when we start the application >> with accent color set to Graphite and then change accent color on-the-fly >> The cell focus ring remains gray. The issue is with the system color >> returned by the type-property "keyboardfocusindicatorcolor" under this >> setting and NOT a JDK product bug. >> >> _For Mac 10.14+:_ >> [controlAccentColor](https://developer.apple.com/documentation/appkit/nscolor/3000782-controlaccentcolor) >> is available and it follows accent color changes (even when application >> started with Graphite as accent color). The proposed fix uses this type >> property when mac version is 10.14+ >> >> PS: The native L&F (Mac OS) and Swing L&F for JTable cell tabbing differs >> (on native tables the cell background turns white on focus with a cell focus >> ring). Since the background for Swing tables can be set by users and also >> overridden by subclassing `DefaultTableCellRenderer`, and to adhere to >> current implementation of Swing, the white cell background changes are not >> incorporated. Only the Focus Ring/ Cell Highlighter is made more prominent. > > Harshitha Onkar has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains 14 additional > commits since the last revision: > > - Merge branch 'master' into focusRing_7124282 > - chnaged variable name > - added new color to CSystemColors.m - CELL_HIGHLIGHT_COLOR > - Merge branch 'master' into focusRing_7124282 > - added new type property and changed method name > - Merge branch 'master' into focusRing_7124282 > - added more generic condition for edge case and formatted line lengths > - Merge branch 'openjdk:master' into focusRing_7124282 > - on-the-fly focus ring color changes added > - updated deriveContrastFocusRing method > - ... and 4 more: > https://git.openjdk.java.net/jdk/compare/b74bd325...e82a1ca0 Marked as reviewed by prr (Reviewer). ------------- PR: https://git.openjdk.java.net/jdk/pull/7768