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
