On Wed, 27 Nov 2024 16:22:49 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..

This pull request has now been integrated.

Changeset: 84032850
Author:    Prasanta Sadhukhan <[email protected]>
URL:       
https://git.openjdk.org/jdk/commit/84032850dbe3add7b7c8d6a4b2fbd5d5cab4483a
Stats:     103 lines in 2 files changed: 95 ins; 4 del; 4 mod

8268145: [macos] Rendering artifacts is seen when text inside the JTable with 
TableCellEditor having JTextfield

Reviewed-by: kizune, abhiscxk, honkar

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

PR: https://git.openjdk.org/jdk/pull/22416

Reply via email to