On Thu, 28 Nov 2024 03:05:27 GMT, Prasanta Sadhukhan <[email protected]>
wrote:
>> When a textfield is embedded in a TableCellEditor in a JTable in Aqua L&F
>> and space is entered and caret moved back and forth by pressing left/right
>> arrow button, an artifact is seen, which is basically the caret is not
>> properly repainted leaving behind its trails.
>>
>> When caret is moved, it is repainted every time by "damaging" the area
>> surrounding the caret to cause it to be repainted in a new location.
>> AquaCaret overrides the default "damage" code to intersect the caret area
>> with the border insets so that it does not damage the AquaBorder area..
>> For TextField case, AquaTextFieldBorder insets is removed from AquaTextField
>> and then intersected with AquaCaret to get the dirry region which is then
>> repainted, so as to not damage the border but it is done irrespective of
>> whether border is shown or not, so proper dirty region is not repainted
>> leaving behind artifacts when the caret is moved around...
>>
>> Fix is to see if border to be painted is not opaque in which case the proper
>> dirty region is calculated which is then used in repaint logic to repaint
>> the component..
>
> Prasanta Sadhukhan has updated the pull request incrementally with one
> additional commit since the last revision:
>
> Test fix
test/jdk/javax/swing/JTable/TestCaretArtifact.java line 51:
> 49: If artifact is seen, press Fail else press Pass.""";
> 50:
> 51: public static void main(String[] args) throws Exception {
small nitpick but I think there's an extra whitespace here after void
test/jdk/javax/swing/JTable/TestCaretArtifact.java line 62:
> 60:
> 61:
> 62: public static JFrame createUI() {
extra whitespace here too
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22416#discussion_r1870194336
PR Review Comment: https://git.openjdk.org/jdk/pull/22416#discussion_r1870194570